1、Android开发基础知识入门开发基础知识入门第第2章章 Android界面开发界面开发2.1 视图组件与视图容器2.2 常用布局2.3 常用控件2.4 对话框Android开发基础知识入门开发基础知识入门第第2章章 Android界面开发界面开发2.5 菜单2.6 常用资源类型2.7 事件处理和消息传递Android开发基础知识入门开发基础知识入门 基本概念(1)组件或控件:界面的基本元素;(2)视图(View):所有控件的基类;(3)视图容器(ViewGroup):控件的载体;2.1 2.1 视图组件和视图容器视图组件和视图容器第2章 Android界面开发Android开发基础知识入门开
2、发基础知识入门 开发用户界面的方式(1)通过Java代码定义控件并设置控件的属性;(2)通过XML文件控制控件的布局和属性;通过XML布局文件控制Android的界面,可以使界面的设计更加简单清晰,具有更低地耦合性。而且这种方式可以将视图的逻辑从Java代码中抽离出来,更加符合MVC的设计原则。Android也推荐使用XML的方式设计界面。2.1 2.1 视图组件和视图容器视图组件和视图容器第2章 Android界面开发Android开发基础知识入门开发基础知识入门 线性布局 线性布局通过LinearLayout类来实现,是一个视图容器,可以向其中添加不同的控件。LinearLayout将控件
3、一个挨着一个排列起来,排列的顺序有横向排列和纵向排列。2.2 2.2 常用布局常用布局第2章 Android界面开发Android开发基础知识入门开发基础知识入门 相对布局(1)相对布局主要通过RelativeLayout类实现,布局方式更灵活。(2)相对布局容器中子控件的位置是由父控件或者其他兄弟控件定义的。可以使当前的控件与其他控件的边界对齐,或者在某个控件的下面,又或者在父控件的中间位置。2.2 2.2 常用布局常用布局第2章 Android界面开发Android开发基础知识入门开发基础知识入门相对布局属性 2.2 2.2 常用布局常用布局第2章 Android界面开发Android开发
4、基础知识入门开发基础知识入门属性取值类型说明android:layout_above其他控件id设置当前控件在指定id的控件上方android:layout_below其他控件id设置当前控件在指定id的控件下方android:layout_toLeftOf其他控件id设置当前控件在指定id的控件左侧android:layout_toRightOf其他控件id设置当前控件在指定id的控件右侧android:layout_alignTop其他控件id设置当前控件与指定id的控件上边界对齐android:layout_alignBottom其他控件id设置当前控件与指定id的控件下边界对齐andr
5、oid:layout_alignLeft其他控件id设置当前控件与指定id的控件左边界对齐android:layout_alignRight其他控件id设置当前控件与指定id的控件右边界对齐android:layout_alignParentToptrue、false设置当前控件是否和父布局的上方对齐android:layout_alignParentBottomtrue、false设置当前控件是否和父布局的下方对齐android:layout_alignParentLefttrue、false设置当前控件是否和父布局的左边界对齐android:layout_alignParentRightt
6、rue、false设置当前控件是否和父布局的右边界对齐android:layout_centerHorizontaltrue、false设置当前控件是否在父布局中水平居中android:layout_centerVerticaltrue、false设置当前控件是否在父布局中垂直居中android:layout_centerInParenttrue、false设置当前控件是否在父布局中居中 列表视图列表视图可以使用ListView控件实现,它展示了一个垂直可滑动的下拉列表,其中的每一行称为ListView的一个子项。2.2 2.2 常用布局常用布局第2章 Android界面开发Android开发
7、基础知识入门开发基础知识入门属性属性描述android:dividerListView的分隔条android:dividerHeight分隔条的高度android:entries数组资源,指定ListView需要显示的内容 网格视图网格视图采用GridView实现,和ListView用法比较类似,但是网格视图是一个二维视图。2.2 2.2 常用布局常用布局第2章 Android界面开发Android开发基础知识入门开发基础知识入门属性属性描述android:columnWidth设置列的宽度android:numColumns设置列数android:verticalSpacing每两行之间的垂
8、直间距android:horizontalSpacing每两列之间的水平间距android:stretchMode拉伸模式android:gravity每一格中内容的对齐方式 文本框和编辑框(1)文本框通过TextView控件实现,用于文字的显示。(2)编辑框通过EditText实现,它继承自TextView,属性和用法与TextView一致,只不过它允许用户改变其中的内容。2.3 2.3 常用控件常用控件第2章 Android界面开发Android开发基础知识入门开发基础知识入门属性属性描述android:text文本框显示的文字android:textSize显示文字的大小android:
9、textColor显示文字的颜色android:gravity文字在文本框中的位置android:ellipsize文字内容超过文本框大小时的显示方式android:password是否以点代替显示输入的文字android:editable文本框是否可编辑android:hint当文本框的内容为空时,显示的提示文字android:singleLine是否单行显示android:autoLink是否将指定格式的文本转化为可点击的链接android:cursorVisible光标是否可见android:drawableLeft在文本框中文本的左侧显示指定图片 文本框和编辑框 2.3 2.3 常用控
10、件常用控件第2章 Android界面开发Android开发基础知识入门开发基础知识入门 android:ellipsize的取值:none:文字超长不做任何处理。start:在文字的起始处显示省略号。middle:在文字的中间显示省略号。end:在文字的结尾处显示省略号。marquee:文字滚动显示。android:autoLink的取值:none:不进行文本检测。web:将文本框中的网址转换为链接。email:将文本框中的邮箱地址转换为链接。phone:将文本框中的电话号码转换为链接。map:将文本框中的地址转换为链接。all:等价于设置为web|email|phone|map。按钮 按钮通
11、过Button控件实现,Button类继承自TextView,它可以供用户单击,当用户单击之后,就会触发一个onClick事件,可以通过监听onClick事件做一些自定义的处理。单选按钮和复选框 在有些界面中,信息并不一定完全需要用户输入,可以提供一组信息让用户进行选择,这可以通过单选按钮和复选框实现。单选框和复选框分别通过RadioButton和CheckBox实现。2.3 2.3 常用控件常用控件第2章 Android界面开发Android开发基础知识入门开发基础知识入门 图片控件图片控件通过ImageView实现,它主要用于图片显示。2.3 2.3 常用控件常用控件第2章 Android
12、界面开发Android开发基础知识入门开发基础知识入门属性属性描述android:adjustViewBounds设置ImageView控件是否调整自己的边界保持所显示图片的长宽比例android:maxHeightImageView控件的最大高度android:maxWidthImageView控件的最大宽度android:scaleType设置图片如何调整自己的大小去适应ImageView控件的大小android:src设置ImageView显示的Drawable对象matrix默认的显示方式,不改变图片的大小,从ImageView的左上角开始显示,超出部分裁剪掉fitXY对图片横向、纵向
13、缩放,使得图片填满整个ImageView显示fitStart保持图片的纵横比进行缩放,直至图片较长的一边和ImageView对应的边相等,然后显示在ImageView的左上部分fitCenter保持图片的纵横比进行缩放,直至图片较长的一边和ImageView对应的边相等,图片居中显示fitEnd保持图片的纵横比进行缩放,直至图片较长的一边和ImageView对应的边相等,然后显示在图片的右下部分center保持原图的大小,将图片显示在ImageView的中间,超出部分裁剪掉centerCrop原图小于ImageView时,保持图片的纵横比放大,直至图片填满整个ImageView,超出部分裁剪掉
14、centerInside保持图片的纵横比进行缩放,直至原图完全显示在ImageView中 进度条和拖动条 进度条可以用来显示当前操作的进度,拖动条在进度条的基础上做了扩展,允许用户随意拖动当前的进度,例如音乐或视频播放器,用户可以拖动滑块实现快进或快退。进度条通过ProgressBar实现,拖动条通过SeekBar实现。2.3 2.3 常用控件常用控件第2章 Android界面开发Android开发基础知识入门开发基础知识入门属性属性说明android:max进度条的最大值android:maxHeight进度条的最大高度android:maxWidth进度条的最大宽度android:minH
15、eight进度条的最小高度android:minWidth进度条的最小宽度android:progress进度条默认显示的进度 简单对话框 AlertDialog提供了一些方法用于生成带消息和操作按钮的对话框,对话框的内容还可以是列表或者是自定义的View。2.4 2.4 对话框对话框第2章 Android界面开发Android开发基础知识入门开发基础知识入门方法名方法说明create()创建一个AlertDialog对话框setCancelable(boolean cancelable)设置当前对话框是否可以被取消setIcon(Drawable icon)设置对话框的标题图标setItem
16、s(CharSequence items,DialogInterface.OnClickListener listener)将对话框的内容设置为列表setMessage(CharSequence message)设置对话框显示的消息setNegativeButton(CharSequence text,DialogInterface.OnClickListener listener)设置“取消”按钮的显示和事件处理setPositiveButton(CharSequence text,DialogInterface.OnClickListener listener)设置“确定”按钮的显示和事件
17、处理setTitle(CharSequence title)设置对话框显示的标题show()显示对话框setView(View view)将对话框的内容区域设置为自定义的View 列表对话框 AlertDialog除了可以创建简单的对话框之外,还可以创建列表对话框。调用AlertDialog.Builder对应的setXXXItems()方法可以创建简单的列表、带有单选按钮的列表、带有多选框的列表。2.4 2.4 对话框对话框第2章 Android界面开发Android开发基础知识入门开发基础知识入门 自定义对话框 除了创建已有的对话框样式外,AlertDialog.Builder还支持调用s
18、erView()方法显示自定义的View。2.4 2.4 对话框对话框第2章 Android界面开发Android开发基础知识入门开发基础知识入门 选项菜单 选项菜单是应用的主菜单项,在应用的任何地方按菜单键都会弹出来。重写Activity的onCreateOptionsMenu()方法创建选项菜单,重写Activity的onOptionsItemSelected(MenuItem item)方法处理点击菜单某一项的操作。2.5 2.5 菜单菜单第2章 Android界面开发Android开发基础知识入门开发基础知识入门 上下文菜单 上下文菜单是指在应用中的某个地方长按会弹出的菜单,类似于在电
19、脑上点击鼠标右键弹出来的菜单。重写Activity的onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo)方法创建上下文菜单,重写onContextItemSelected(MenuItem item)方法处理单击后的操作。2.5 2.5 菜单菜单第2章 Android界面开发Android开发基础知识入门开发基础知识入门 资源类型2.6 2.6 常用资源常用资源第2章 Android界面开发Android开发基础知识入门开发基础知识入门目录资源类型res/animator/存放xml文件,定义属性动画。res
20、/anim/存放xml文件,定义补间动画。res/color/存放xml文件,定义颜色状态列表。res/drawable/存放图片或者xml文件,用于表示可绘制对象。res/layout/存放xml文件,定义页面布局。res/menu/存放xml文件,定义菜单内容。res/raw/以原始形式保存的任意文件。要以IO流的方式打开。res/values/包含多种数值文件,相应的文件名如下:arrays.xml,用于资源数组(类型化数组)。colors.xml:颜色值。dimens.xml:尺寸值。strings.xml:字符串值。styles.xml:样式。资源使用(1)在代码中访问 访问形式:R
21、.,其中resource_type代表资源的类型,resource_name代表资源的名称。(2)在xml文件中访问 访问形式:/2.6 2.6 常用资源常用资源第2章 Android界面开发Android开发基础知识入门开发基础知识入门TextView txt=(TextView)findViewById(R.id.txt);txt.setText(R.string.txt_name);字符串、颜色、尺寸 字符串、颜色、尺寸的资源文件均在res/values/目录下,三者都定义在xml文件中,根元素是,每个子元素定义一个字符串,每个子元素定义一个颜色值,每个子元素定义一个尺寸值。2.6 2.
22、6 常用资源常用资源第2章 Android界面开发Android开发基础知识入门开发基础知识入门 Hello World#FF0000#00FF00 20sp 26sp 国际化 在Android资源中实现国际化比较简单,只需要按照一定格式为不同的语言定义对应的资源文件夹,应用运行的时候会自动匹配加载最合适的文件。以字符串资源为例,实现国际化需要在res目录下创建对应语言values文件夹,values文件夹的命名方式是values-语言码-r国家码,例如values-zh-rCN代表简体中文,其中,zh代表中文,CN代表大陆地区,类似的还有values-en-rUS代表美式英语。每个value
23、s文件夹下都有一个strings.xml文件,其中的字符串以不同的语言显示。2.6 2.6 常用资源常用资源第2章 Android界面开发Android开发基础知识入门开发基础知识入门 基于监听的事件处理(1)事件源:事件产生所在的组件,例如点击一个按钮,按钮就是事件源。(2)事件类型:产生的事件类型,如单击事件、长按事件、触摸事件等。(3)事件监听器:被动地监听组件上产生的事件,并做出相应处理。使用基于监听的事件处理时,需要对组件调用相应的setListener()方法设置事件监听器,例如调用setOnClickListener()方法监听单击事件,调用setOnLongClickListe
24、ner()方法监听长按事件,并重写其中的回调方法做自定义的处理。2.7 2.7 事件处理和消息传递事件处理和消息传递第2章 Android界面开发Android开发基础知识入门开发基础知识入门 基于回调的事件处理 基于回调的事件处理不需要为组件设置事件监听器,当系统检测到有用户操作时,会直接回调组件中特定的方法做处理。因此,基于回调的事件处理需要定义一个类继承自需要的组件,并重写其中的特定方法以实现自定义的处理。2.7 2.7 事件处理和消息传递事件处理和消息传递第2章 Android界面开发Android开发基础知识入门开发基础知识入门 Handler消息传递 Handler的处理方式是通过
25、一系列的post和send方法发送一条消息到消息队列中,系统会从消息队列中取出消息并执行对应的任务。Handler还可以延时发送消息,所以可用于延时操作。2.7 2.7 事件处理和消息传递事件处理和消息传递第2章 Android界面开发Android开发基础知识入门开发基础知识入门方法名方法说明post(Runnable r)将任务加入到消息队列中postAtTime(Runnable r,long uptimeMillis)在指定时间将任务加入到消息队列中postDelayed(Runnable r,long delayMillis)延迟一定时间后将任务加入到消息队列中removeCallbacks(Runnable r)将任务从消息队列中移除sendEmptyMessage(int what)发送消息ID为what的消息sendMessage(Message msg)发送消息体为msg的消息 视图组件和视图容器的基本概念常用的布局方式常用的控件对话框的创建菜单的使用常用的资源事件处理和消息机制总结总结第2章 Android界面开发Android开发基础知识入门开发基础知识入门