Android Studio:一个简单的米英尺单位转化app的实现过程_移动应用开发android studio转换器

146 阅读5分钟
  • 在Java代码中,添加事件处理程序,以实现从按钮点击到数据处理和输出显示的完整逻辑流程。当用户点击“转换”按钮时,应用程序将接收用户输入的数据,并计算出转换结果,然后显示在界面上。
  • 对应用程序进行测试和调试,确保应用程序在Android设备上正常运行。

  总之,使用Android Studio进行开发,可以很方便地实现一个米和英尺转换器。在开发过程中,需要注意界面布局、事件处理、数据处理、算法实现等方面的细节,以实现一个稳定、高效、易用的移动应用程序。同时,可以根据需求进行功能扩展和用户体验优化,以满足不同用户的需求和要求。


部分核心代码

<!-- 输入文本框 -->
<EditText
 android:id="@+id/edit\_text"
 android:layout\_width="286dp"
 android:layout\_height="85dp"
 android:ems="10"
 android:inputType="textPersonName"
 android:text="Enter meters here"
 app:layout\_constraintBottom\_toBottomOf="parent"
 app:layout\_constraintEnd\_toEndOf="parent"
 app:layout\_constraintHorizontal\_bias="0.497"
 app:layout\_constraintStart\_toStartOf="parent"
 app:layout\_constraintTop\_toTopOf="parent"
 app:layout\_constraintVertical\_bias="0.346" />

<!-- 图片视图 -->
<ImageView
 android:id="@+id/imageView2"
 android:layout\_width="408dp"
 android:layout\_height="213dp"
 app:layout\_constraintBottom\_toBottomOf="parent"
 app:layout\_constraintEnd\_toEndOf="parent"
 app:layout\_constraintHorizontal\_bias="1.0"
 app:layout\_constraintStart\_toStartOf="parent"
 app:layout\_constraintTop\_toTopOf="parent"
 app:layout\_constraintVertical\_bias="0.0"
 app:srcCompat="@drawable/image" />

<!-- 按钮控件 -->
<Button
 android:id="@+id/convert\_button"
 android:layout\_width="363dp"
 android:layout\_height="63dp"
 android:text="CONVERT"
 app:layout\_constraintBottom\_toBottomOf="parent"
 app:layout\_constraintEnd\_toEndOf="parent"
 app:layout\_constraintStart\_toStartOf="parent"
 app:layout\_constraintTop\_toTopOf="parent" />

<!-- 显示文本框 -->
<TextView
 android:id="@+id/result\_text"
 android:layout\_width="348dp"
 android:layout\_height="121dp"
 android:text="TextView"
 android:textAlignment="center"
 android:textSize="34sp"
 app:layout\_constraintBottom\_toBottomOf="parent"
 app:layout\_constraintEnd\_toEndOf="parent"
 app:layout\_constraintHorizontal\_bias="0.38"
 app:layout\_constraintStart\_toStartOf="parent"
 app:layout\_constraintTop\_toTopOf="parent"
 app:layout\_constraintVertical\_bias="0.693" />

// 按钮的转换操作
converbutton.setOnClickListener((v) ->{
            String input = edittext.getText().toString();
            double value = Double.parseDouble(input);
            double result = value \* miToFT;
            resulttext.setText(String.format("%.2f英尺",result));
            resulttext.setVisibility(View.VISIBLE);
        });



基本效果图

在这里插入图片描述
说明:实验要求完成的部分基本完成,只是简单的实现单位的转换功能,右下角的那个图片属于拓展部分的,适用于通过点击图片实现为页面添加背景颜色的功能,下面就简单说一下怎么实现这一功能吧。


拓展部分简单分析

  如果需求是文本图片下方显示一段红色的固定背景,在用户点击图片时,背景不需要变化,可以采用以下步骤实现:

  • 在原有的项目基础上,添加一个ImageView和一个TextView控件。选定需要带有红色背景的TextView,将其位置设置在ImageView的下方。
  • 在Java代码中,为TextView控件设置背景颜色。
  • 将TextView的背景颜色设置为红色,以显示红色的背景。

相关代码的实现

<TextView
 android:id="@+id/result\_text"
 android:layout\_width="348dp"
 android:layout\_height="121dp"
 android:text="TextView"
 android:textAlignment="center"
 android:textSize="34sp"
 app:layout\_constraintBottom\_toBottomOf="parent"
 app:layout\_constraintEnd\_toEndOf="parent"
 app:layout\_constraintHorizontal\_bias="0.38"
 app:layout\_constraintStart\_toStartOf="parent"
 app:layout\_constraintTop\_toTopOf="parent"
 app:layout\_constraintVertical\_bias="0.693" />

<ImageView
 android:id="@+id/imageView3"
 android:layout\_width="200dp"
 android:layout\_height="141dp"
 app:layout\_constraintBottom\_toBottomOf="parent"
 app:layout\_constraintEnd\_toEndOf="parent"
 app:layout\_constraintHorizontal\_bias="0.886"
 app:layout\_constraintStart\_toStartOf="parent"
 app:layout\_constraintTop\_toTopOf="@+id/imageView2"
 app:layout\_constraintVertical\_bias="0.957"
 app:srcCompat="@drawable/image1" />


imageView.setOnClickListener((V)->{
            int color = Color.argb(128,255,0,0);
            mainview.setBackgroundColor(color);
        });

  代码说明:找到需要设置背景色的控件,然后使用Color.argb方法生成一个Argb颜色值,其中第一个参数128指定了颜色的透明度为50%(255是不透明,0是全透明),后面三个参数分别为红、绿、蓝的颜色值最后使用setBackgroundColor方法将颜色值设置为控件的背景色即可,需要注意的是,不同的设备可能会有不同的透明度支持,因此需要进行实测调试,以保证透明效果符合需求。


基本实现效果图

在这里插入图片描述


  再次申明本次实验是自己的Android Studio实验作业,题目出自帅帅老师,上面的只是部分核心代码的实现,很简单,因为自己也是第一次学习Android Studio,本身Java基础就不怎么好,上面的代码仅供参考,基本的bug已经修复,运行是没有问题的。有问题或者代码还有可以改进的地方可以一起学习交流,欢迎大佬指正~


bug问题1描述

  上面的实现过程中有一个问题不知道大家有没有发现,这个也是我调试多次后发现这个地方可以改进一下,就是那个输入文本框中的内容,在用户每次输入数值的时候,都必须将里面的提示内容全部清除掉才可以进行输入新的内容,所以显得很麻烦,理想的状态应该是用户通过点击输入文本框的时候,就会自动将里面的提示内容隐藏掉,直接输入新的内容。


修改bug2的过程

<EditText
 android:id="@+id/edit\_text"
 android:layout\_width="286dp"
 android:layout\_height="85dp"
 android:ems="10"
 android:inputType="text"
 android:hint="Enter meters here"
 app:layout\_constraintBottom\_toBottomOf="parent"
 app:layout\_constraintEnd\_toEndOf="parent"
 app:layout\_constraintHorizontal\_bias="0.497"
 app:layout\_constraintStart\_toStartOf="parent"
 app:layout\_constraintTop\_toTopOf="parent"
 app:layout\_constraintVertical\_bias="0.346" />

  说明:其中,android:hint属性表示提示文本的内容,可以根据需求自行修改。此外,android:inputType属性指定了EditText控件的输入类型。在上述代码中,输入类型设置为text,表示接受任意文本输入。可以根据需求设置对应的输入类型,例如数字、日期、邮箱等。当用户点击EditText控件时,提示文本会自动隐藏,用户可以直接在输入框内输入内容。需要注意的是,在设置EditText控件的输入类型时,可能会受到输入法的影响,不同的输入法可能会有不同的输入效果。为避免输入错误,建议在需要输入特定类型的文本时,通过设置输入类型及相关的输入限制,来确保输入的正确性。


bug问题2描述

  前一个问题就是一个简单的小问题,大不了用户删除内容重新进行修改就可以了,但是还有一个致命的问题就是在输入文本框中,当用户输入直接的数字,运行是没有问题的,但是当用户输入12米或者13m的时候,程序就会闪崩,既然提前注意到了,下面是自己尝试修改的过程。


修改bug2的过程

converbutton.setOnClickListener((v) ->{
            String input = edittext.getText().toString();
            
            String regex = "\\d+(\\.\\d+)?";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(input);

            while (matcher.find()) {


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/d2aa044dcb204eeeb863ff2852ce9dc2~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1772461021&x-signature=vxHdOxNNXyDzW%2FXmMkBVJMzswWg%3D)
![img](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/30a2570efeb54ceca60f345bcf06d0dc~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1772461021&x-signature=M9CzBYkbbmuFhrJhQVrMj7v96%2Fg%3D)

**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**