1、UI
1.1 布局管理器
View <- ViewGroup <- LinearLayout 线性布局 <- tableLayout 表格布局
<- GridLayout 网格布局 Android4.0及以上使用
<- FrameLayout 帧布局
<- relativeLayout 相对布局
<- absoluteLayout 绝对布局 不同屏幕大小、不同分辨率时,比较难控制
1.2 TextView
TextView <- CheckedTextView
(不允许编辑)<- EditText(可编辑) <- AutoCompleteTextView <- MultiAutoCompleteTextView
<- ExtractEditText
<- Chronometer 计时器
<- Button <- CompoundButton <- CheckBox 复选框
<- RadioButton 单选按钮
<- ToggleButton 状态开关按钮
<- Switch 开关
<- DigitalClock / analogclock 时钟
TextView:默认情况下,TextView不带边框,若想为其添加边框,可以考虑为TextView设置一个Drawable,该Drawable只是一个边框,这样就实现了带边框的TextView。当设置背景为Drawabke对象时,背景可以自定义,实现渐变等特效。
设置的背景文件以xml格式存放在drawable_mdpi文件夹内,然后直接通过
android:background="@drawable/bg_border"
其中bg_border.xml就是自定义绘画的背景图
e.g.:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 指定圆角矩形的四个圆角的半径 -->
<corners android:topLeftRadius="20px"
android:topRightRadius="5px"
android:bottomLeftRadius="5px"
android:bottomRightRadius="20px"/>
<!-- 设置边框 -->
<stroke android:width="4px" android:color="#f0f"/>
<!-- 指定使用渐变背景色,使用sweep类型的渐变 颜色从红色-绿色-蓝色 -->
<gradient android:startColor="#f00"
android:centerColor="#0f0"
android:endColor="#00f"
android:type="sweep"/>
</shape>
1.3 使用9Patch图片作为按钮背景
一般情况下,当按钮的内容太多时,Android会自动缩放整张图片,以保证背景图片能覆盖整个按钮。但这种缩放整张图片的效果可能并不好。可能需要的情况是我们只想缩放图片中的某个部分,这样才能保证按钮的视觉效果。
为了实现只缩放图片中某个部分的效果,我们需要借助于9Patch图片来实现。9patch图片是一种特殊的PNG图片,这种图片以9.png结尾,它在原始图片四周各添加一个宽度为1px的线条,这4条线决定该图片的缩放规则、内容显示规则。
左侧和上侧的直线共同决定了图片的缩放区域:以左边直线为左边界绘制矩形,它覆盖的区域可以在纵向缩放;以上面直线为上边界绘制矩形,它覆盖的区域可以水平缩放;它们二者的交集可以在两个方向上缩放。
右侧和下侧的直线共同决定图片的内容显示区域:以右边直线为右边界绘制矩形,以下边直线为下边界绘制矩形,它们二者的交集就是图片的内容显示区域。
Android为制作9Patch图片提供了Draw9patch工具,该工具位于Android SDK安装路径的tools目录下,进入该目录双击draw9patch.bat文件,即可启动该工具。
如果启动该程序时提示java.lang.NoClassDefFoundError:org/jdesktop/swingworker/SwingWorker异常。可能的原因是draw9patch工具需要依赖于SwingWorker类,这个类在JDK1.5以前需要单独下载swing-worker的JAR包,但从JDK1.6以后,该类已经加入了javax.swing包下,但Android SDK还在使用早起的SwingWorker,而且android SDK又删除了swing-worker-1.1.jar包,所以引发上面的错误,为能正常启动draw9patch.bat,手动将swing-worker-1.1.jar复制到Android SDK安装路径的tools/lib路径下即可。
启动draw9patch.bat后,通过该类工具菜单的”File-> Open 9-Patch“菜单项打开一张PNG图片,然后通过该工具定义图片的缩放区域、内容显示区域。
将生成的图片保存到应用的res/drawable-mdpi路径下,主文件名任意,draw9patch.bat自动将该文件的后缀保存为.9.png。
1.5 Switch必须是API 14以上的才能使用。
1.6 ImageView <- ImageButton <- ZoomButton 可以代表放大、缩小 两个按钮
<- QuickContactBadge显示关联到特定联系人的图片
Android小知识:
@+id/ok与@id/ok的区别
@+id/ok 新增一个资源ID,值为ok
@id/ok 应用现有资源id
如果在@后面使用“+”,表示当修改完某个布局文件并保存后,系统会自动在R.java文件中生成相应的int类型变量。变量名就是“/”后面的值
例如,@+id/ok会在R.java文件中生成int ok = value,其中value是一个十六进制的数。如果ok在R.java中已经存在同名的变量,
就不再生成新的变量,而该组件会使用这个已存在的变量的值。
既然组件的id属性是一个资源id就可以,那么自然可以设置任何已经存在的资源id值,例如,@drawable/icon、@string/ok、@+string/you等。也可以设置android系统中已存在的资源id,例如@id/android:list,那么,这个android是什么意思呢,实际上,这个android就是系统的R类(在R.java文件中)所在的package。