《【精品】Android应用程序界面编程精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】Android应用程序界面编程精品ppt课件.ppt(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Android应用程序界面编程 界面编程与视图(View)组件Android应用的所有UI组件都继承自View类。ViewGroup也是继承自View类,但是ViewGroup主要用作其他UI控件的容器。界面编程与视图(View)组件View和ViewGroup的关系 Android SDK文档的阅读Android SDK文档在安装目录里doc目录下。使用XML布局控制UI界面Android推荐使用XML布局文件来控制视图。将视图控制逻辑从Java代码中分离出来,放入XML文件中控制,体现了MVC的设计思想。通过如下代码在Activity中显示视图:setContentView(R.layou
2、t.);通过如下方法访问指定的UI组件:findViewById(R.id.);开发自定义的View当Android系统提供的UI不能满足需求时,就可以通过继承View类来自定义UI组件。重写View类的一个或多个方法。重要方法:onDraw(Canvas):绘制组件的内容onKeyDown(int,KeyEvent):某个键被按下onTouchEvent(MotionEvent):发生触摸事件 基本界面组件 文本框(TextView)TextView的作用是在界面上显示文字。常用属性:android:ellipsize 设置当文本超出了TextView的长度时如何处理android:draw
3、ableLeft 在文本框左边绘制指定图像 文本框(TextView)android:autoLink 设置文本的链接属性。(none:不设置超链接,web:将文本中的URL地址转换为链接,phone:将文本中的电话转换为链接,map:将文本中的街道地址转换为链接)。android:hint 当文本框内容为空时,默认的提示文字。编辑框(EditText)编辑框的主要作用是接收用户的输入。编辑框继承自文本框,因此支持文本框的所有属性。常用属性:android:editable 设置该文本框是否可编辑android:singleLine是否为单行模式 编辑框(EditText)android:pa
4、ssword 将文本框设置为密码框android:hint 当文本框为空时,默认的提示文字android:digits 设置文本框能接收的字符android:phoneNumber 设置文本框只能接受电话号码 按钮(Button)按钮的主要作用是响应用户的单击事件,当用户单击按钮,按钮会触发一个OnClick事件。常用属性:android:background 设置背景颜色或背景图片android:src 链接到一个资源文件,为按钮设置动态效果 按钮(Button)响应用户的单击事件:mybtn=(Button)findViewById(R.id.mybtn);mybtn.setOnClick
5、Listener(new OnClickListener()Overridepublic void onClick(View v)/处理事件);图片按钮(ImageButton)图片按钮(ImageButton)继承自按钮(Button),两者的区别是图片按钮上不可显示文字。常用属性:android:img 设置按钮上显示的图片 单选按钮(RadioButton)RadioGroup是一个单选按钮组,组中的每一个RadioButton代表一个选项。每一组中最多只有一个RadioButton可以被选中常用属性:android:checked 初始状态是否被选中。单选按钮(RadioButton)
6、响应onCheckedChanged事件:myRadioGroup=(RadioGroup)findViewById(R.id.myRadioGroup);myRadioButton1=(RadioButton)findViewById(R.id.myRadioButton1);myRadioButton2=(RadioButton)findViewById(R.id.myRadioButton2);myRadioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()Overridepublic void onChecked
7、Changed(RadioGroup group,int checkedId)/处理事件if(checkedId=myRadioButton1.getId()sex=男男;if(checkedId=myRadioButton2.getId()sex=女女;);复选按钮(CheckBox)复选按钮(CheckBox)中可以有多个选项被选中。常用属性:android:checked 初始状态是否被选中。状态开关按钮(ToggleButton)ToggleButton有两种状态,开和关,通常用于切换程序中的某种状态。常用属性:android:checked 设置该按钮是否被选中android:tex
8、tOff 当按钮没被选中时显示的文本android:textOn 当按钮被选中时显示的文本 状态开关按钮(ToggleButton)响应onCheckedChanged事件ToggleButton toggle=(ToggleButton)findViewById(R.id.toggle);toggle.setOnCheckedChangeListener(new OnCheckedChangeListener()Overridepublic void onCheckedChanged(CompoundButton arg0,boolean arg1)/处理事件);时钟(AnalogClock
9、和DigitalClock)时钟组件的功能是在界面上显示当前时间。时钟组件分为模拟时钟和数字时钟。模拟时钟不能显示当前秒数。计时器(Chronometer)计时器组件并不显示当前时间。它显示从某个时间开始,一共过去了多少时间。常用方法:setBase(long base):设置起始时间setFormat(String format):设置时间格式 计时器(Chronometer)start():开始计时end():停止计时setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定事件监听
10、器,当计时器改变时触发该监听器。图像视图(ImageView)ImageView的主要功能是显示图片。常用属性:android:adjustViewBounds 是否调整自己的边界来保持所显示图片的长宽比android:src 设置所显示的图片对象id 图像视图(ImageView)android:scaleType 设置所显示的图片如何缩放或移动以适应ImageView的大小。属性值如下:fitXY:对图片横向、纵向独立缩放。fitStart:保持纵横比缩放,图片放在ImageView左上角。fitCenter:保持纵横比缩放,图片放在ImageView中央。fitEnd:保持纵横比缩放,图
11、片放在ImageView右下角。center:把图片放在ImageView中间,不进行任何缩放。centerCrop:保持纵横比缩放,图片完全覆盖ImageView。centerInside:保持纵横比缩放,ImageView能完全显示该图片。布局管理器 布局管理器Android布局管理器本身就是一个UI组件。所有的布局管理器都是继承自ViewGroup类。布局管理器可以相互嵌套。常用的布局管理器:LinearLayoutTableLayoutFrameLayoutRelativeLayoutAbsoluteLayout 布局管理器 线性布局(LinearLayout)容器内的控件一个挨着一个
12、排列。重要属性:android:orientation 设置容器内控件排列方式,水平排列或者垂直排列。android:gravity 设置容器内的组件的对齐方式,组件相对于容器的位置。表格布局(TableLayout)表格布局采用行、列的形式来管理UI组件。TableRow表示每一行,TableRow中的每一个组件代表一列。重要属性:android:collapseColumns 设置被隐藏的列android:shrinkColumns 设置允许收缩的列android:stretchColumns 设置允许拉伸的列 帧布局FrameLayout帧布局容器为每个加入其中的组件创建一个空白区域(称
13、为一帧)。如果没有设置对齐方式,容器中的组件会重叠在一起。重要属性:android:foreground 设置该帧布局容器的前景图android:foregroundGravity 设置帧布局前景图的位置 相对布局RelativeLayout相对布局容器内子组件的位置总是相对于其他组件和父容器决定。控制组件位置的属性android:layout_centerHorizontal 控制组件是否在容器中水平局中android:layout_centerVertical 控制组件是否在容器中垂直局中 绝对布局AbsoluteLayout绝对布局中,系统不提供任何布局控制,开发人员通过X坐标,Y坐标来
14、控制组件的位置。Android手机屏幕的尺寸和分辨率差别很大,使用绝对布局很难适应不同的屏幕分辨率。Android中的长度单位px(像素):每个像素对应屏幕上的一个点。dip或dp(设备独立像素):基于屏幕密度的抽象单位。sp(比例像素):主要处理字体大小,可对字体进行缩放。其他:in(英寸)、mm(毫米)、pt(磅)高级界面组件 自动完成文本框(AutoCompleteTextView)自动完成文本框继承自EditText。具有自动提示功能。常用属性:android:completionHint 出现在下拉菜单中的提示标题android:completionThreshold 至少输入几个字
15、符才会显示提示 自动完成文本框(AutoCompleteTextView)android:dropDownHeight 设置下拉菜单的高度android:dropDownWidth 设置下拉菜单的宽度android:popupBackground 设置下拉菜单的背景android:dropDownHorizontalOffset 设置下拉菜单与文本框之间的水平偏移android:dropDownVerticalOffset 设置下拉菜单与文本框之间的垂直偏移 自动完成文本框(AutoCompleteTextView)用适配器为自动完成文本框添加数据/创建一个ArrayAdapter适配器,封装
16、数组ArrayAdapter myAdapter=new ArrayAdapter(this,android.R.layout.simple_dropdown_item_1line,books);AutoCompleteTextView actv=(AutoCompleteTextView)findViewById(R.id.auto);/设置Adapteractv.setAdapter(myAdapter);下拉列表(Spinner)用户点击Spinner,会弹出一个下拉列表式的选择框。常用属性:android:prompt 设置选择框的标题。android:entries 使用数组资源设置
17、下拉列表的列表项目。下拉列表(Spinner)使用适配器为Spinner添加选择框的数据Spinner spinner1=(Spinner)findViewById(R.id.Spinner01);ArrayAdapter adapter=ArrayAdapter.createFromResource(this,R.array.colors,android.R.layout.simple_spinner_item);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);spinner1.se
18、tAdapter(adapter);日期选择器(DatePicker)DatePicker主要供用户选择日期。可以为DatePicker添加OnDateChangedListener监听。时间选择器(TimePicker)TimePicker主要供用户选择时间。如果程序需要获取用户选择的时间,可以为TimePicker添加OnTimerChangedListener监听来实现。进度条(ProgressBar)ProgressBar的主要作用是向用户显示某个比较耗时的操作的进度。常用属性:android:max 设置进度条的最大值android:progress 设置进度条已完成的进度 进度条(
19、ProgressBar)style 进度条的样式,属性值:android:style/Widget.ProgressBar.Horizontal 水平进度条android:style/Widget.ProgressBar.Inverse 旋转的进度条android:style/Widget.ProgressBar.Large 大进度条android:style/Widget.ProgressBar.Small 小进度条常用方法:setProgress(int):设置进度完成的百分比incrementProgressBy(int):设置进度增加或减少 拖动条(SeekBar)SeekBar允许用
20、户拖动滑块来改变值,如调节音量等。常用属性:android:max 设置拖动条的最大值。android:progress 设置拖动条当前进度。android:thumb 指定一个图片当作拖动条的滑块。拖动条(SeekBar)为SeekBar添加OnSeekBarChangeListener监听器:seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()/当拖动条的滑块位置发生改变时触发该方法Overridepublic void onProgressChanged(SeekBar arg0,int progress,boo
21、lean fromUser)/处理事件Overridepublic void onStartTrackingTouch(SeekBar bar)Overridepublic void onStopTrackingTouch(SeekBar bar);星级评分条(RatingBar)RatingBar的主要用来评分。常用属性:android:numStars 设置评分条有多少个星级。android:rating 设置评分条默认的星级。android:stepSize 设置每次需要改变多少星级。星级评分条(RatingBar)android:isIndicator 设置星级评分条是否允许用户改变。
22、为RatingBar绑定OnRatingBarChangeListener监听器,即可监听星级的改变。选项卡(TabHost)TabHost可以在窗口上放置多个标签,方便切换。TabHost仅仅是一个简单的容器,它提供了如下两个方法来创建选项卡、添加选项卡:newTabSpec(String tag):创建选项卡addTab(TabHost.TabSpec tabSpec):添加选项卡 选项卡(TabHost)使用TabHost的一般步骤:I.在界面布局中定义TabHost组件。II.Activity应继承自TabActivity。III.调用TabActivity的getTabHost()方
23、法获取TabHost对象。IV.通过TabHost对象的方法来创建选项卡、添加选项卡。滚动视图(ScrollView)ScrollView的作用是为其他组件添加滚动条。ScrollView里最多只能包含一个组件。ScrollView只能添加垂直滚动条,如果要添加水平滚动条,则需要HorizontalScrollView。列表视图(ListView)ListView以垂直列表的形式显示所有的列表项。常用属性:android:divider 设置List列表的分割条(颜色或图片)。android:dividerHeight 设置分割条的高度。android:entries 指定要显示的数组资源。列
24、表视图(ListView)使用适配器为ListView添加数据:ListView list1=(ListView)findViewById(R.id.list2);/定义一个数组String arr=“列表视图,列表视图,列表视图;/将数组包装ArrayAdapterArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,arr);/为ListView设置Adapterlist1.setAdapter(arrayAdapter);可展开列表组件(ExpandableListView)
25、ExpandableListView继承自ListView,它可以把列表分组,每组里又可以包含多个列表。常用属性:android:childDivider 指定各组内子列表之间的分割条。android:groupIndicator 指定组列表旁边的图像。可展开列表组件(ExpandableListView)android:childIndicator指定子列表旁边的图像。创建BaseExpandableListAdapter对象为列表添加数据。网格视图(GridView)GridView用于在界面上按行、列分布的方式显示多个组件。常用属性:android:columnWidth 设置列的宽度。
26、android:numColumns 设置列数 网格视图(GridView)android:stretchMode 设置拉伸模式。android:horizontalSpacing 设置各元素之间的水平间距。android:verticalSpacing 设置各元素之间的垂直间距。画廊视图(Gallery)Gallery允许用户通过拖动来查看上一个、下一个列表项。常用属性:android:animationDuration 设置列表项切换时动画持续的时间。android:spacing 设置列表项之间的距离 画廊视图(Gallery)android:unselectedAlpha 设置没有选中
27、的列表项的透明度。Gallery使用Adapter提供数据。如果要监听Gallery选择项的改变,只要为Gallery添加OnItemSelectedListener即可。对话框 使用AlertDialog创建对话框Android提供了丰富的对话框支持。通过AlertDialog可以创建基本的对话框。常用方法:setIcon(Drawable icon):设置对话框的图标。setTitle(String title):设置对话框的标题。使用AlertDialog创建对话框setMessage(String message):设置对话框的内容。使用AlertDialog创建对话框的一般步骤:I.
28、创建AlertDialog.Builder对象。II.调用AlertDialog.Builder的方法为对话框设置图标、标题、内容等。III.调用AlertDialog.Builder的create()方法创建AlertDialog对话框。IV.调用AlertDialog.Builder的show()方法显示对话框。使用AlertDialog创建对话框AlertDialog除了可以创建简单的对话框,还可以创建如下复杂对话框:带列表、按钮的列表对话框。带多个单选列表项的对话框。带多个多选列表项的对话框。自定义界面的对话框。PopupWindowPopupWindow用于创建类似于对话框风格的窗口
29、。使用PopupWindow创建对话框风格的窗口需要两步:调用PopupWindow构造器创建PopupWindow对象。调用PopupWindow的showAsDropDown(View v)或showAtLocation显示PopupWindow。日期选择对话框(DatePickerDialog)日期选择对话框只是将日期选择组件包装为对话框的形式。通过new关键字创建DatePickerDialog实例,调用它的show()方法即可显示。为DatePickerDialog绑定监听器。时间选择对话框(TimePickerDialog)时间选择对话框的使用方法和日期选择对话框的使用方法和基本相
30、同。进度对话框(ProgressDialog)进度条对话框是以对话框的方式显示进度。常用方法:setMax(int max):设置对话框进度条的最大值。setMessage(CharSequence message):设置对话框里显示的消息。进度对话框(ProgressDialog)setProgress(int value):设置对话框里进度条的最大值。setProgressStyle(int Style):设置对话框里进度条的风格。setIndeterminate(boolean indeterminate):设置对话框里的进度条不显示进度值。消息提示 Toast提示Toast是在界面上显
31、示一个简单的提示信息。Toast提示信息不会获得焦点。使用Toast生成提示消息的步骤:Toast提示I.调用Toast的构造器或makeText方法创建Toast对象。II.调用Toast的方法设置提示消息的对齐方式、页边距、显示的内容。III.调用Toast的show()方法将它显示出来。Toast提供了一个setView()方法,允许开发者自定义Toast显示的内容。Notification提示Notification是显示在手机状态栏的消息。Notification表示一种全局的通知。使用Notification的步骤:Notification提示调用getSystemService(
32、NOTIFICATION_SERVICE)获取系统NotificationManager服务。通过构造器创建一个Notification对象。为Notification设置各种属性。通过NotificationManager发送Notification。通过Notification的defaults属性可以设置提示声音、振动、闪光灯等。菜单 选项菜单(SubMenu)选项菜单是在点击“MENU”按键显示的菜单。最多只有6个菜单位,超过6个会显示“更多”。选项菜单(SubMenu)添加选项菜单的步骤:I.重写Activity的onCreateOptionsMenu(Menu menu)方法。II
33、.重写Activity的onOptionsItemSelected(MenuItem mi)方法,响应菜单的单击事件。上下文菜单(ContextMenu)当一个View注册了上下文菜单时,长按此View即可显示上下文菜单。上下文菜单(ContextMenu)开发上下文菜单的步骤:I.重写Activity的onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo)方法。II.调用Activity的registerForContextMenu(View view)方法为View组件注册上下文菜单。III.重写Activity的onContextItemSelected(MenuItem item)方法,响应菜单的单击事件。谢谢大家!