一、像素
Android支持的像素单位常见的主要有三种:
(1)px 它是手机屏幕上可显示的最小单位,与物理设备的显示屏有关。
(2)dp/dip 它与物理设备无关,只与屏幕的尺寸有关。
(3)sp 它的原理跟dp差不多,专门用于设置字体大小。系统设置菜单里面,设置普通字体时,同数值dp和sp的文字看起来一 样大;如果设置为大字体,用dp设置的文字没有变化,用sp设置的文字就变大了。
二、颜色
1. 在Android中,颜色值由透明度alpha和RGB(红、绿、蓝)三原色定义,有八位十六进制数与六位十六进制数两种编码。
2.在Android中使用颜色有3种方式:
(1) 使用系统已定义的颜色常量。 Android系统有12种已经定义好的颜色,具体的类型定义在Color类中。
(2) 使用十六进制的颜色编码。 在布局文件中设置颜色需要在色值前面加“#”,如android:textColor=“#000000”。在代码中设 置颜色可以直接填八位的十六进制数值(如setTextColor(0xff00ff00);)。
(3) 在res/values/colors.xml中定义颜色常量。 在布局中使用颜色常量,可引用“@color/常量名” ;在代码中使用颜色常量, 可这样获取:getResources().getColor(R.color.常量名)。
三、屏幕分辨率
1. 手机的屏幕分辨率信息包括:屏幕的宽度、屏幕的高度、屏幕的像素密度。
2.在代码中获取分辨率要依靠DisplayMetrics工具,下面是该类的常用属性说明:
widthPixels:以px为单位计量的宽度值。
heightPixels:以px为单位计量的高度值。
density:像素密度,即一个dp单位包含多少个px单位。
例:
获取当前屏幕的宽度、高度、像素密度的代码。
四、简单布局
1.视图View的基本属性:
View是Android的基本视图,所有控件和布局都是由View类派生而来,故而View类的基本属性和方法是各控件和布局通 用的。
视图在XML布局文件中常用的属性定义:
id:指定该视图的编号。
layout_width:指定该视图的宽度。
layout_height:指定该视图的高度。
layout_margin:指定该视图与周围视图之间的空白距离。
background:指定该视图的背景。背景可以是颜色,也可以是图片。
layout_gravity:指定该视图与上级视图的对齐方式。
padding:指定该视图边缘与内部视图之间的空白距离。
visibility:指定该视图的可视类型。 2.视图View的基本方法
视图在代码中常用的设置方法说明:
setBackgroundColor:设置该视图的背景颜色。
setBackgroundDrawable:设置该视图的背景图片。
setBackgroundResource:设置该视图的背景资源id。
setPadding:设置该视图边缘与内部内容之间的空白距离。
setVisibility:设置该视图的可视类型。
3. margin和padding的区别
margin和padding看字面意思都是空白距离,那么它们到底有什么区别呢?
(1)margin是指当前视图与周围视图的距离。
(2)padding是指当前视图与内部视图的距离。
例:
margin和padding之间区别
五、线性布局LinearLayout
1.视图组ViewGroup是一类特殊视图,所有的布局类视图都是从它派生而来的。
2.Android中的视图分为两类,一类是布局,另一类是控件。
布局与控件的区别:
(1)布局本质上是个容器,里面还可以放其他视图(包括子布局和子控件);
(2)控件是一个单一的实体,已经是最后一级,下面不能再挂其他视图。
线性布局LinearLayout的常见属性:
LinearLayout是最常用的布局,名字叫线性布局。
线性布局的内部视图的排列是有顺序的,要么从上到下依次垂直排列,要么从左到右依次水平排列。
线性布局的常见属性:
orientation:指定线性布局的方向。
gravity:指定布局内部视图与本线性布局的对齐方式。
layout_weight:指定当前视图的宽或高占上级线性布局的权重。
layout_gravity和gravity之间的区别:
六、滚动视图ScrollView
1.与线性布局类似,滚动视图也分为垂直方向和水平方向两类,其中垂直滚动的视图名是ScrollView,水平滚动的视图名是 HorizontalScrollView。
2.注意事项(重要):滚动视图节点下面必须且只能挂着一个子布局节点,否则会在运行时报错。
七、简单控件
1.文本视图TextView
1).跑马灯用到的属性
当一行文本的内容太多,导致无法全部显示,也不想分行展示时,只能让文字从左向右滚动显示,类似于跑马灯。跑马灯效果 在XML布局文件中实现时需要额外指定部分属性。
2).聊天室效果
聊天室窗口的高度是固定的,新的文字消息总是加入窗口末尾,同时窗口内部的文本整体向上滚动,窗口的大小、位置保持 不变。在XML布局文件中实现聊天室时需要额外指定部分属性。
2.按钮Button
Button派生自TextView,二者在UI上的区别主要是Button控件有个按钮外观,提示用户点击这里。
1).点击和长按事件的关系
3.图像视图ImageView
ImageView是图像显示控件,与图形显示有关的属性说明如下。
scaleType:指定图形的拉伸类型,默认是fitCenter。
src:指定图形来源,src图形按照scaleType拉伸。
4.图像按钮ImageButton
ImageButton其实派生自ImageView,而不是派生自Button,图像视图拥有的属性和方法,图像按钮统统拥有,只是 ImageButton有个默认的按钮外观。
ImageButton和Button都起到控制按钮的作用,不同的是Button是文本按钮,ImageButton是图像按钮,
这两个按钮的主要区别在于:
(1)Button既可显示文本也可显示图形(通过设置背景图),而ImageButton只能显示图形不能显示文本。
(2)ImageButton上的图像可按比例拉伸,而Button上的大图会拉伸变形(因为背景图无法按比例拉伸)。
(3)Button只能在背景显示一张图形,而ImageButton可分别在前景和背景显示两张图形,实现图片叠加的效果。
在按钮中同时显示图标和文字的办法:
使用TextView能在文字周围放置图片,那么Button同样也能实现。 具体可在XML布局文件中设置以下5个属性。
drawableTop:指定文本上方的图形。
rawableBottom:指定文本下方的图形。
drawableLeft:指定文本左边的图形。
drawableRight:指定文本右边的图形。
drawablePadding:指定图形与文本的间距。 若在代码中实现,则可调用如下方法。
setCompoundDrawables:设置文本周围的图形。可分别设置左边、上边、右边、下边的图形。
setCompoundDrawablePadding:设置图形与文本的间距。
5.图形Drawable
drawable文件放在res目录的各个drawable目录下。
\res\drawable一般存放的是描述性的XML文件,图片文件一般放在具体分辨率的drawable目录下。
drawable-ldpi存放低分辨率的图片(如240×320),现在基本没有这样的智能手机了。
drawable-mdpi存放中等分辨率的图片(如320×480),这样的智能手机已经很少了。
drawable-hdpi存放高分辨率的图片(如480×800),一般对应4寸~4.5寸的手机(但不绝对,同尺寸的手机有可能分辨率不同,手机分辨率就高不就低,因为分辨率低了屏幕会有模糊的感觉)。
drawable-xhdpi存放加高分辨率的图片(如720×1280),一般对应5寸~5.5寸的手机。
drawable-xxhdpi存放超高分辨率的图片(如1080×1920),一般对应6寸~6.5寸的手机。
drawable-xxxhdpi存放超超高分辨率的图片(如1440×2560),一般对应7寸以上的平板电脑。
如何使用图形文件:
在XML布局文件中引用drawable文件可使用“@drawable/***”这种形式,
如background属性、ImageView和ImageButton的src属性、TextView和Button的drawableTop系列属性都可以引用drawable文件。 在代码中引用drawable文件可分为两种情况:
(1)使用setBackgroundResource和setImageResource方法,可直接在参数中指定drawable文件的资源ID,例 如“R.drawable.***”。
(2)使用setBackgroundDrawable、setImageDrawable和setCompoundDrawables等方法,参数是Drawable对象,这时得先从资源文件中生成Drawable对象,例:
// 从资源库里的图片文件apple.png获取图形对象
Drawable drawable = getResources().getDrawable(R.drawable.apple);
状态列表图形:
一般drawable是静态图形,如Button按钮的背景在正常情况下是凸起的,在按下时是凹陷的,从按下到弹起的过程,用户便能知道点击了这个按钮。
在项目中创建状态图形的XML文件,则需右击drawable目录,然后在右键菜单中依次选择New→Drawable resource file,即可自动生成一个空的XML文件。
下面是一个状态列表图形的drawable文件:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
<item android:drawable="@drawable/button_normal" /> </selector>
6.形状图形
shape图形用来描述形状定义,形状图形的定义文件以shape元素为根节点, shape节点用来描述该形状图形是哪种几何图形。
根节点shape下定义了6个子节点:
corners(圆角):它用来描述4个圆角的规格定义。
gradient(渐变):它用来描述形状内部的颜色渐变定义。
padding(间隔):它用来描述形状图形与周围视图的间隔大小。
size(尺寸):它用来描述形状图形的尺寸大小(宽度和高度)。
solid(填充):它用来描述形状图形内部的填充色彩。
stroke(描边):它用来描述形状图形四周边线的规格定义。
下面是一个shape图形的XML描述文件代码:
7.九宫格图片
当图片被拉大时,画面容易模糊,如果把图片作为背景图,模糊的情况会更严重。
例如下面第一个按钮的图片被拉得很宽,此时左右两边的边缘线既变宽又变模糊了。
九宫格图片的制作步骤:
为了解决这个问题,Android专门设计了点九图片。点九图片的扩展名是png,文件名后常带有“.9”字样。
因为把一张图片划分成了3×3的九宫格区域,所以得名点九图片,也叫九宫格图片。
找到待加工的原始图片button_pressed_orig.png,右击它弹出右键菜单,并选择下面的“Create 9-Patch files”,单击“OK”按钮。
接着drawable目录就会出现一个名为“button_pressed_orig.9.png”的图片文件,双击该文件,右侧弹出点九图片的加工窗口