Android学习笔记

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。

 

posted on 2015-09-18 01:57  bonnielai  阅读(124)  评论(0编辑  收藏  举报