当前位置:首页 > 资讯 > 正文

第003天:APP的UI设计

第003天:APP的UI设计

这两种写法都可以实现对按钮点击事件的监听,至于使用哪一种就全凭你的喜好了。

  1. EditText

        EditText是程序用于和用户进行交互的另一个重要控件,它允许用户在控件里输入和编辑内 容,并可以在程序中对这些内容进行处理。EditText的应用场景非常普遍,在进行发短信、发微 博、聊QQ等操作时,你不得不使用EditTexto那我们来看一看如何在界面上加入EditText吧, 修改activity main.xml中的代码,如下所示:

 
 

        其实看到这里,我估计你已经总结出Android控件的使用规律了,用法基本上都很相似:给控件定义一个id,再指定控件的宽度和高度,然后再适当加入一些控件特有的属性就差不多了。

所以使用XML来编写界面其实一点都不难,完全可以不用借助任何可视化工具来实现。现在重新运行一下程序,EditText就已经在界面上显示出来了,并且我们是可以在里面输入内容的, 如图3.5所示。

        细心的你平时应该会留意到,一些做得比较人性化的软件会在输入框里显示一些提示性的文 字,然后一旦用户输入了任何内容,这些提示性的文字就会消失。这种提示功能在Android里是 非常容易实现的,我们甚至不需要做任何的逻辑控制,因为系统已经帮我们都处理好了。修改 activity main.xml, 如下所示:

 
 

这里使用android:hint属性指定了一段提示性的文本,然后重新运行程序,效果如图3.6 所示。

        可以看到,EditText中显示了一段提示性文本,然后当我们输入任何内容时,这段文本就会自动消失。

        不过,随着输入的内容不断增多,EditText会被不断地拉长。这时由于EditText的高度指定的是wrap_content,因此它总能包含住里面的内容,但是当输入的内容过多时,界面就会变得非常难看。我们可以使用android:maxLines属性来解决这个问题,修改activity_main.xml,如下所示:

 
 

这里通过android :maxLines指定了 EditText的最大行数为两行,这样当输入的内容超过两 行时,文本就会向上滚动,而EditText则不会再继续拉伸,如图3.7所示。

我们还可以结合使用EditTextButton来完成一些功能,比如通过点击按钮来获取EditText 中输入的内容。修改MainActivity中的代码,如下所示:

 
 

        首先通过findViewById()方法得到EditText的实例,然后在按钮的点击事件里调用EditText getText()方法获取到输入的内容,再调用toStringO方法转换成字符串,最后还是老方法, 使用Toast将输入的内容显示出来。

        重新运行程序,在EditText中输入一段内容,然后点击按钮,效果如图3.8所示。

  1. ImageView

        ImageView是用于在界面上展示图片的一个控件,它可以让我们的程序界面变得更加丰富多 彩。学习这个控件需要提前准备好一些图片,图片通常都是放在以“drawable”开头的目录下的。 目前我们的项目中有一个空的drawable目录,不过由于这个目录没有指定具体的分辨率,所以一 般不使用它来放置图片。这里我们在res目录下新建一个drawable-xhdpi目录,然后将事先准备 好的两张图片img l.pngimg_2.png复制到该目录当中。

接下来修改activity main.xml,如下所示:

 
 

可以看到,这里使用android:src属性给ImageView指定了一张图片。由于图片的宽和高 都是未知的,所以将ImageView的宽和高都设定为wap_content,这样就保证了不管图片的尺 寸是多少,图片都可以完整地展示出来。重新运行程序,效果如图3.9所示。

我们还可以在程序中通过代码动态地更改ImageView中的图片,然后修改MainActivity的代 码,如下所示:

 
 

在按钮的点击事件里,通过调用Image ViewsetImageResource()方法将显示的图片改成 img_2,现在重新运行程序,然后点击一下按钮,就可以看到ImageView中显示的图片改变了, 如图3.10所示。

  1. ProgressBar

ProgressBar用于在界面上显示一个进度条,表示我们的程序正在加载一些数据。它的用法也 非常简单,修改activity main.xml中的代码,如下所示:

 
 

重新运行程序,会看到屏幕中有一个圆形进度条正在旋转,如图3.11所示。

        这时你可能会问,旋转的进度条表明我们的程序正在加载数据,那数据总会有加载完的时候 吧?如何才能让进度条在数据加载完成时消失呢?这里我们就需要用到一个新的知识点: Android控件的可见属性。所有的Android控件都具有这个属性,可以通过android: visibility 进行指定,可选值有3种:visible, invisiblegonevisible表示控件是可见的,这个 值是默认值,不指定android:visibility时,控件都是可见的。invisible表示控件不可见, 但是它仍然占据着原来的位置和大小,可以理解成控件变成透明状态了。gone则表示控件不仅 不可见,而且不再占用任何屏幕空间。我们还可以通过代码来设置控件的可见性,使用的是 setvisibility()方法,可以传入 View. VISIBLE. View. INVISIBLE View.GONE 3 种值。

接下来我们就来尝试实现,点击一下按钮让进度条消失,再点击一下按钮让进度条出现的这 种效果。修改MainActivity中的代码,如下所示: