2019年第5章Android用户界面.ppt

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第5章Android用户界面5.1用户界面基础设计手机用户界面应解决的问题需要界面设计与程序逻辑完全分离,这样不仅有利于他们的并行开发,而且在后期修改界面时,也不用再次修改程序的逻辑代码根据不同型号手机的屏幕解析度、尺寸和纵横比各不相同,自动调整界面上部分控件的位置和尺寸,避免因为屏幕信息的变化而出现显示错误能够合理利用较小的屏幕显示空间,构造出符合人机交互规律的用户界面,避免出现凌乱、拥挤的用户界面Android已经解决了前两个问题,使用XML文件描述用户界面;资源资源文件独立保存在资源文件夹中;对界用户面描述非常灵活,允许不明确定义界面元素的位置和尺寸,仅声明界面元素的相对位置和粗略尺寸5.1用户界面基础Android用户界面框架Android用户界面框架(AndroidUIFramework)采用MVC(Model-View-Controller)模型提供了处理用户输入的控制器(Controller)显示用户界面和图像的视图(View),以及保存数据和代码的模型(Model)模型控制器视图键盘等输入绘制界面更新5.1用户界面基础Android用户界面框架MVC模型MVC模型中的控制器能够接受并响应程序的外部动作,如按键动作或触摸屏动作等控制器使用队列处理外部动作,每个外部动作作为一个对立的事件被加入队列中,然后Android用户界面框架按照“先进先出”的规则从队列中获取事件,并将这个事件分配给所对应的事件处理函数5.1用户界面基础Android用户界面框架Android用户界面框架(AndroidUIFramework)采用视图树(ViewTree)模型Android用户界面框架中的界面元素以一种树型结构组织在一起,称为视图树Android系统会依据视图树的结构从上至下绘制每一个界面元素。每个元素负责对自身的绘制,如果元素包含子元素,该元素会通知其下所有子元素进行绘制ViewGroupViewGroupViewViewViewViewView5.1用户界面基础Android用户界面框架视图树视图树由View和ViewGroup构成View是界面的最基本的可视单元,存储了屏幕上特定矩形区域内所显示内容的数据结构,并能够实现所占据区域的界面绘制、焦点变化、用户输入和界面事件处理等功能View也是一个重要的基类,所有在界面上的可见元素都是View的子类ViewGroup是一种能够承载含多个View的显示单元ViewGroup功能:一个是承载界面布局,另一个是承载具有原子特性的重构模块5.1用户界面基础Android用户界面框架单线程用户界面在单线程用户界面中,控制器从队列中获取事件和视图在屏幕上绘制用户界面,使用的都是同一个线程特点:处理函数具有顺序性,能够降低应用程序的复杂程度,同时也能减低开发的难度缺点:如果事件处理函数过于复杂,可能会导致用户界面失去响应5.2界面控件Android系统的界面控件分为定制控件和系统控件定制控件是用户独立开发的控件,或通过继承并修改系统控件后所产生的新控件。能够为用户提供特殊的功能或与众不同的显示需求方式系统控件是Android系统提供给用户已经封装的界面控件。提供在应用程序开发过程中常见功能控件。系统控件更有利于帮助用户进行快速开发,同时能够使Android系统中应用程序的界面保持一致性常见的系统控件包括TextView、EditText、Button、ImageButton、Checkbox、RadioButton、Spinner、ListView和TabHost5.2界面控件5.2.1TextView和EditTextTextView是一种用于显示字符串的控件EditText则是用来输入和编辑字符串的控件EditText是一个具有编辑功能的TextView5.2界面控件5.2.1TextView和EditText建立一个“TextViewDemo”的程序,包含TextView和EditText两个控件上方“用户名”部分使用的是TextView,下方的文字输入框使用的是EditText5.2界面控件5.2.1TextView和EditTextTextViewDemo在XML文件中的代码1.TextViewandroid:id=@+id/TextView012.android:layout_width=wrap_content3.android:layout_height=wrap_content4.android:text=TextView015./TextView6.EditTextandroid:id=@+id/EditText017.android:layout_width=fill_parent8.android:layout_height=wrap_content9.android:text=EditText0110./EditText5.2界面控件5.2.1TextView和EditText第1行android:id属性声明了TextView的ID,这个ID主要用于在代码中引用这个TextView对象“@+id/TextView01”表示所设置的ID值@表示后面的字符串是ID资源加号(+)表示需要建立新资源名称,并添加到R.java文件中斜杠后面的字符串(TextView01)表示新资源的名称如果资源不是新添加的,或属于Android框架的ID资源,则不需要使用加号(+),但必须添加Android包的命名空间,例如android:id=@android:id/empty5.2界面控件5.2.1TextView和EditText第2行的android:layout_width属性用来设置TextView的宽度,wrap_content表示TextView的宽度只要能够包含所显示的字符串即可第3行的android:layout_height属性用来设置TextView的高度第4行表示TextView所显示的字符串,在后面将通过代码更改TextView的显示内容第7行中“fill_content”表示EditText的宽度将等于父控件的宽度5.2界面控件5.2.1TextView和EditTextTextViewDemo.java文件中代码的修改第1行代码的findViewById()函数能够通过ID引用界面上的任何控件,只要该控件在XML文件中定义过ID即可第3行代码的setText()函数用来设置TextView所显示的内容1.TextViewtextView=(TextView)findViewById(R.id.TextView01);2.EditTexteditText=(EditText)findViewById(R.id.EditText01);3.textView.setText(用户名:);4.editText.setText();5.2界面控件5.2.2Button和ImageButtonButton是一种按钮控件,用户能够在该控件上点击,并后引发相应的事件处理函数ImageButton用以实现能够显示图像功能的控件按钮5.2界面控件5.2.2Button和ImageButton建立一个“ButtonDemo”的程序,包含Button和ImageButton两个按钮,上方是“Button按钮”,下方是一个ImageButton控件5.2界面控件5.2.2Button和ImageButtonButtonDemo在XML文件中的代码定义Button控件的高度、宽度和内容定义ImageButton控件的高度和宽度,但是没定义显示的图像,在后面的代码中进行定义1.Buttonandroid:id=@+id/Button012.android:layout_width=wrap_content3.android:layout_height=wrap_content4.android:text=Button015./Button6.ImageButtonandroid:id=@+id/ImageButton017.android:layout_width=wrap_content8.android:layout_height=wrap_content9./ImageButton5.2界面控件5.2.2Button和ImageButton引入资源将download.png文件拷贝到/res/drawable文件夹下在/res目录上选择Refresh新添加的文件将显示在/res/drawable文件夹下R.java文件内容也得到了更新否则提示无法找到资源的错误5.2界面控件5.2.2Button和ImageButton更改Button和ImageButton内容引入android.widget.Button和android.widget.ImageButton第1行代码用于引用在XML文件中定义的Button控件第2行代码用于引用在XML文件中定义的ImageButton控件第3行代码将Button的显示内容更改为“Button按钮”第4行代码利用setImageResource()函数,将新加入的png文件R.drawable.download传递给ImageButton1.Buttonbutton=(Button)findViewById(R.id.Button01);2.ImageButtonimageButton=(ImageButton)findViewById(R.id.ImageButton01);3.button.setText(Button按钮);4.imageButton.setImageResource(R.drawable.download);5.2界面控件5.2.2Button和ImageButton按钮响应点击事件:添加点击事件的监听器第2行代码中button对象通过调用setOnClickListener()函数,注册一个点击(Click)事件的监听器View.OnClickListener()第3行代码是点击事件的回调函数第4行代码将TextView的显示内容更改为“Button按钮”1.finalTextViewtextView=(TextView)findViewById(R.id.TextView01);2.button.setOnClickListener(newView.OnClickListener(){3.publicvoidonClick(Viewview){4.textView.setText(Button按钮);5.}6.});7.imageButton.setOnClickListener(newView.OnClickListener(){8.publicvoidonClick(Viewview){9.textView.setText(ImageButton按钮);10.}11.});5.2界面控件5.2.2Button和ImageButtonView.OnClickListener()View.OnClickListener()是View定义的点击事件的监听器接口,并在接口中仅定义了onClick()函数当Button从Android界面框架中接收到事件后,首先检查这个事件是否是点击事件,如果是点击事件,同时Button又注册了监听器,则会调用该监听器中的onClick()函数每个View仅可以注册一个点击事件的监听器,如果使用setOnClickListener()函数注册第二个点击事件的监听器,之前注册的监听器将被自动注销多个按钮注册到同一个点击事件的监听器上,代码如下5.2界面控件5.2.2Button和ImageButton第1行至第12行代码定义了一个名为buttonListe

1 / 143
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功