Android常用控件与布局
- View的概念
- 常用控件
- TextView(文本框)
- EditText(输入框)
- Button (按钮)
- 给按钮添加监听事件的方法
- ImageView (图像视图)
- ProgressBar (进度条)
- SeekBar(拖动条)
- AlerDialog (对话框)
- 常用布局
- LinearLayout(线性布局)
- RelativeLayout(相对布局)
- FrameLayout(帧布局)
- PecentaFrameLayout、PecentRelativeLayout(百分比布局)
- 控件与布局美化
- Shape
- Selector
View的概念
- Android 应用的绝大部分UI组件都放在android.widget包和android.view包中。
- View是用户界面组件的共同父类,几乎所有的用户界面组件都是继承View类而实现的,如TextView、Button、EditText等。
- 对View类及其子类的属性进行设置,可以在布局文件XML中设置,也可以通过成员方法在Java代码中动态设置。
- 多个视图组件(View)可以存放在一个视图容器(ViewGroup)中,该容器可以与其他视图组件共同存放在另一个视图容器当中,但是一个界面文件必须有且仅有一个容器作为根节点。
- Android应用的界面都是由View和ViewGroup对象构建的,ViewGroup继承了View类,也可以当做普通的View来使用,但主要还是当成容器来使用。
常用控件
TextView(文本框)
直接继承了View,它还是EditText和Button两个UI组件类的父类。TextView的作用是在界面上显示文字,通过在布局文件当中或者在Activity中修改文字的内容。
EditText(输入框)
继承自TextView,因此共用了TextView的许多XML属性。
与TextView的最大区别:EditText能够接受用户的输入。
• 重要属性inputType,:用于将EditText设置为指定类型的输入组件, 如手机号、密码、日期等。
• 属性hint:提示用户当前文本框要输入的内容是什么。使用 android:hint=“”来提示用户,当用户点击文本框这些文字就会消失。
• 属性editable:设置是否可编辑,其值为“true”或“false”。
• 方法EditText(Context context):构造方法,创建文本编辑框对象。
• 方法getText():获取文本编辑框的文本内容。
• 方法setText(CharSequence text):设置文本编辑框的文本内容
Button (按钮)
按钮Button用于处理人机交互的事件,主要是在UI界面上生成一个按钮,用户可以点击按钮,并且能为按钮添加onClick事件即点击事件。
由于按钮Button是文本标签TextView的子类,按钮Button继承了文本标签TextView所有的方法和属性。
给按钮添加监听事件的方法
匿名内部类
在定义的按钮对象的setOnClickLister方法中直接定义事件。•按钮Button在程序设计中最常用的方式是实现OnClickListener 监听接口,当单击按钮时,通过OnClickListener监听接口触发onClick()事件,实现用户需要的功能。
• OnClickListener接口有一个onClick()方法,在按钮Button实现 OnClickListener接口时,一定要重写这个方法。
• 按钮Button调用OnClickListener接口对象的方法如下:
按钮对象.setOnClickListener(OnClickListener对象);loginButton = (Button)findViewById(R.id.login_button); loginButton.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ ...... } });
内部定义
与第1种方式略有区别,在loginButton 的setOnClickLister方法中使用listener,而listener是在后面的定义的OnClickListener类型的对象。loginButton.setOnClickListener(listener); Button.OnClickListener listener = new Button.OnClickListener(){ public void onClick(View v){ .... }};
接口方式
在类的声明中加入implements View.OnClickListener,然后使用loginButton.setOnClickListener(this)进行监听,最后定义onClick方法进行监听事件的处理。此种方法适合Activity中有多个控件需要监听的情景,根据传入的View的ID进行不同控件事件的监听。public class LoginActivity extends AppCompatActivity implements View.OnClickListener{ loginButton.setOnClickListener(this); public void onClick(View v){ switch(v.getId()){ case R.id.login_button: ..... break; }}}
- android:onClick
直接在按钮的布局代码中添加onClick属性, 然后在Activity中定义相应方法即可。
ImageView (图像视图)
ImageView是用于在界面上展示图片的一个控件,它可以让我们的程序界面变得更加丰富多彩。图片通常都是放在以“drawable”开头的目录下的。
常用属性和方法:android:src、android:background、setImageResource()方法
比较容易使用,前两个属性直接给imageview指定图片的位置就行了。这个方法里需要提供某个图片资源的ID,然后就能够在java代码中将一个图片指定给某个ImageView对象,可用于动态设置图片。
ProgressBar (进度条)
用于向用户显示某个耗时操作完成的百分比。进度条可以动态地显示进度,因此避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应,从而带给用户更好的体验。
SeekBar(拖动条)
SeekBar 是 ProgressBar 的子类,与进度条非常相似,只是进度条采用颜色填充来表示进度完成的程度,而拖动条则通过滑块的位置来标识数字。拖动条允许用户拖动滑块来改变值,因此拖动红条通常用于对系统的某种数值进行调节,比如音量调节。
AlerDialog (对话框)
AlerDialog可以在当前的界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此,AlerDialog一般都是用于提示一些非常重要的内容或者警告信息。比如为了防止用户误删重要内容,在删除前弹出一个确认对话框。
常用布局LinearLayout(线性布局)
线性布局LinearLayout将组件按照水平或垂直方向排列。在XML文件中,由根元素LinearLayout来标识线性布局。
RelativeLayout(相对布局)
FrameLayout(帧布局)
PecentaFrameLayout、PecentRelativeLayout(百分比布局)
百分比布局,允许直接指定控件在布局中所占的百分比。由于LinearLayout 本身已经支持按比例指定控件的大小了,因此百分比布局只为FrameLayout 和RealitiveLayout进行了功能扩展。
百分比布局属于新增布局,定义在了support库中,使用时需要在项目的build.gradle中添加百分比布局库的依赖。
打开app/build.gradle 在dependencies闭包中添加 compile ‘com.android.support:percent:24.2.1’
然后点击Sync now 将引入的库添加到项目中。
百分比布局不是内置在系统SDK中的,所以需要把完整包路径写出来,还必须定义一个app的命名空间,才能使用百分比布局的自定义属性。
<android.support.percent.PercentFrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
使用时注意PercentFrameLayout 会继承FrameLayout的特性,控件的布局位置要注意调整。
控件与布局美化Shape
在Android程序开发中,经常会去用到Shape去定义各种各样的形状,画出想要的背景,相对于图片来说,使用shape可以减少安装包的大小,而且能够更好地适配不同的手机。
shape可以画4种图形:矩形(rectangle)、椭圆(oval)、线(line)、圆环(ring)
5种效果:填充(solid)、渐变(gradient)、描边(stroke)、圆角(corners)、间隔(padding)
利用xml文件描述,作为一种资源,放于drawable目录
Selector