Android UI开发基础 52html
3.1 Android UI框架 52android
3.1.1 View和ViewGroup 52git
l 请分析View和ViewGroup的关系。框架
答案:View是ViewGroup的父类。Android的UI开发使用层次模型来完成,通常都是在一个ViewGroup中嵌套多层ViewGroup,每一层中含有随意数目的View。咱们能够将整个屏幕看作一个ViewGroup,它同时也是一个View,而在这个总体的ViewGroup之中,又有多个ViewGroup和View,每一个ViewGroup中又能够有多个子ViewGroup和View。布局
3.1.2 Android UI开发分类 53this
3.2 经常使用的基本控件(一) 55spa
3.2.1 TextView 58.net
l 请说明TextView继承自谁和它是用来干什么的。xml
答案:它直接继承自View,用来向用户显示文本并容许用户编辑它。htm
l 请写出TextView的很多于四个子孙类。
答案:EditText、Button、DigitalClock、TextClock、CheckedTextView、Chronometer、CheckBox、RadioButton和Switch等。
3.2.2 EditText 62
l EditText是什么,及其用处。
答案:EditText继承自TextView,专门用来获取用户输入的文本信息。因为它是继承自TextView的,因此能够说EditText就是一个可编辑的TextView。
3.2.3 Button 63
l Button继承自什么类,及其做用。
答案: Button一样继承自TextView,它自己还有几个子孙类,包括CheckBox、RadioButton、Switch和ToggleButton等。按钮在UI开发中用的不少,经常使用来响应用户的点击。
3.3 Android UI布局 64
3.3.1 LinearLayout——线性布局 65
3.3.2 RelativeLayout——相对布局 67
3.3.3 TableLayout——表格布局 68
3.3.4 FrameLayout——帧布局 70
3.3.5 AbsoluteLayout——绝对布局 71
l 请写出Android中的五大布局。
答案:LinearLayout线性布局、RelativeLayout相对布局、TableLayout表格布局、FrameLayout帧布局和AbsoluteLayout绝对布局。
l 请介绍下Android中经常使用的五种布局
答案:Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),
AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。
1.FrameLayout
这个布局能够当作是墙脚堆东西,有一个四方的矩形的左上角墙脚,咱们放了第一个东西,要再放一个,那就在放在原来放的位置的上面,这样依次的放,会盖住原来的东西。这个布局比较简单,也只能放一点比较简单的东西。
2.LinearLayout
线性布局,这个东西,从外框上能够理解为一个div,他首先是一个一个从上往下罗列在屏幕上。每个LinearLayout里面又可分为垂直布局 (android:orientation="vertical")和水平布局(android:orientation="horizontal" )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每个元素依次向右排列。
linearLayout中有一个重要的属性 android:layout_weight="1",这个weight在垂直布局时,表明行距;水平的时候表明列宽;weight值越大就越大。
3.AbsoluteLayout
绝对布局犹如div指定了absolute属性,用X,Y坐标来指定元素的位置android:layout_x="20px" android:layout_y="12px" 这种布局方式也比较简单,可是在垂直随便切换时,每每会出问题,并且多个元素的时候,计算比较麻烦。
4.RelativeLayout
相对布局能够理解为某一个元素为参照物,来定位的布局方式。主要属性有:
相对于某一个元素
android:layout_below="@id/aaa" 该元素在 id为aaa的下面
android:layout_toLeftOf="@id/bbb" 改元素的左边是bbb
相对于父元素的地方
android:layout_alignParentLeft="true" 在父元素左对齐
android:layout_alignParentRight="true" 在父元素右对齐
还能够指定边距等,具体详见API
5.TableLayout
表格布局相似Html里面的Table。每个TableLayout里面有表格行TableRow,TableRow里面能够具体定义每个元素,设定他的对齐方式 android:gravity="" 。
每个布局都有本身适合的方式,另外,这五个布局元素能够相互嵌套应用,作出美观的界面。
3.4 经常使用的基本控件(二) 71
3.4.1 ImageView和ImageButton 72
l 请写出ImageButton和ImageView的关系和区别。
答案:ImageButton继承自ImageView ;ImageButton用在须要接收用户点击的图片显示中,而ImageView则通常用来直接显示图片。
3.4.2 CheckBox、RadioButton和ToggleButton 75
l CheckBox、RadioButton和ToggleButton的父类是谁,及它们都是什么?
答案:这三者所有是Button的子类,都是与处理用户点击事件有关的控件。其中,CheckBox是选择框,RadioButton是单选按钮,而ToggleButton是双状态选择按钮。
l Android经常使用控件的信息。
答案:单选框(RadioButton与RadioGroup):
RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框被选中。
事件:setOnCheckedChangeListener(),处理单选框被选择事件。把RadioGroup.OnCheckedChangeListener实例做为参数传入。
多选框(CheckBox):
每一个多选框都是独立的,能够经过迭代全部的多选框,而后根据其状态是否被选中在获取其值。
事件:setOnCheckChangeListener()处理多选框被选择事件。把CompoundButton.OnCheckedChangeListener实例做为参数传入
下拉列表框(Spring):
Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值。
事件:setOnItemSelectedListener(),处理下拉列表框被选择事件把AdapterView.OnItemSelectedListener实例做为参数传入;
拖动条(SeekBar):
SeekBar.getProgress()获取拖动条当前值
事件:setOnSeekBarChangeListener(),处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例做为参数传入。
菜单(Menu):
重写Activity的onCreatOptionMenu(Menu menu)方法,该方法用于建立选项菜单,咋用户按下手机的"Menu"按钮时就会显示建立好的菜单,在onCreatOptionMenu(Menu Menu)方法内部能够调用Menu.add()方法实现菜单的添加。
重写Activity的onMenuItemSelected()方法,该方法用于处理菜单被选择事件。
进度对话框(ProgressDialog):
建立并显示一个进度对话框:ProgressDialog.show(ProgressDialogActivity.this,"请稍等","数据正在加载中....",true);
设置对话框的风格:setProgressStyle()
ProgressDialog.STYLE_SPINNER 旋转进度条风格(为默认风格)
ProgressDialog.STYLE_HORIZONTAL 横向进度条风格
l android:gravity与android:layout_gravity的区别。
答案:LinearLayout有两个很是类似的属性:android:gravity与android:layout_gravity。他们的区别在 于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的 对齐方式。
举个例子,咱们能够经过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同 时咱们设置EditText的android:layout_gravity="right"来让EditText组件在LinearLayout中居中 显示。来实践如下:
正如咱们所看到的,在EditText中,其中的文字已经居中显示了,而EditText组件本身也对齐到了LinearLayout的右侧。
[html] view plaincopyprint?
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="wrap_content"
android:gravity="center"
android:layout_height="wrap_content"
android:text="one"
android:layout_gravity="right"/>
</LinearLayout>
这两个属性也能够用于 Framlayout Textview 等等,表示的意思大同小异。
l padding与margin的区别。
答案:padding填充的意思,指的是view中的content与view边缘的距离,相似文本中的indent
而margin表示的是view的左边缘与parent view的左边缘的距离
margin通常用来描述控件间位置关系,而padding通常描述控件内容和控件的位置关系。
简单,padding是站在父 view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。margin则是站在本身的角度描述问题,规定本身和其余(上下左右)的 view之间的距离,若是同一级只有一个view,那么它的效果基本上就和padding同样了。例如个人XML layout代码以下:
view plaincopy to clipboardprint?
[html] view plaincopyprint?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:paddingTop="10dip"
android:paddingBottom="10dip"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:text="@string/hello"
android:paddingLeft="50dip"
android:paddingRight="50dip"
android:paddingTop="50dip"
android:paddingBottom="50dip"
android:layout_marginBottom="10dip"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:text="@string/hello"
android:paddingLeft="50dip"
android:paddingRight="50dip"
android:paddingTop="50dip"
android:paddingBottom="50dip"
android:layout_marginBottom="10dip"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:text="@string/hello"
android:paddingLeft="50dip"
android:paddingRight="50dip"
android:paddingTop="50dip"
android:paddingBottom="50dip"
android:layout_marginBottom="10dip"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FF0000"
android:text="@string/hello"
android:paddingLeft="50dip"
android:paddingRight="50dip"
android:paddingTop="50dip"
android:paddingBottom="50dip"
android:layout_marginBottom="10dip"
/>
</LinearLayout>
那么我会获得以下的效果,图上已经很明确的标出来区别咯。
l 注册广播接收者两种方式的区别。
答案:如今咱们就来实现一个简单的广播程序。Android提供了两种注册广播接受者的形式,分别是在程序中动态注册和在xml中指定。他们之间的区别就是做用 的范围不一样,程序动态注册的接收者只在程序运行过程当中有效,而在xml注册的接收者无论你的程序有没有启动有会起做用。