android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf

所需积分/C币:48 2019-06-10 13:29:50 91.08MB PDF
收藏 收藏
举报

android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf
第2章初级控件25 21.2颜色 置 在 Android中,颜色值由透明度 alpha和RGB(红、绿、蓝)三原色定义,有八位十六进 制数与六位十六进制数两种编码,例如八位编码 FFEEDDCC,FF表示透明度,EE表示红色 不 的浓度,DD表示绿色的浓度,CC表示蓝色的浓度。透明度为FF表示完全不透明,为00表 示完全透明。RGB三色的数值越大颜色越浓也就越亮,数值越小颜色越暗。亮到极致就是白 色,暗到极致就是黑色,这样记就不会搞混了。 六位十六进制编码有两种情况,在XML文件中默认不透明(透明度为FF),在代码中默 认透明(透明度为00)。下面的代码分别给两个文本控件设置六位编码和八位编码的背景色。 ∥从布局文件中获取名叫 tv code six的文本视图 Text view tv code six- find View Byld(R id tv code six); ∥给文本视图 tv code six设置背景为透明的绿色,透明就是看不到 code six setBackground Color(Ox00ff0O) l的 ∥从布局文件中获取名叫 tv code eight的文本视图 Text View tv code_ _eight= find View Byld(R id tv code eight) 丙个 ∥给文本视图 tv code eight设置背景为不透明的绿色,即正常的绿色 tv_code eight setBackground Color(Oxff0oft0o) 从图2-3可以看到,代码使用六位编码看不到任何背景,使用八位编码能够看到正确的绿 色背景 Junior 设置六位背景颜色 代码设置六位背景颜色 代码设置八位背景鱼 图23不同方式设置颜色编码的效果图 在 Android中使用颜色有下列3种方式: 使用系统已定义的颜色常量 文字 droid系统有12种已经定义好的颜色,具体的类型定义在Coor类中,详细的取值说明 大小 见表2 ling 表21颜色类型的取值说明 代 Cor类中的颜色类型 说明 cor类中的颜色类型说明 CK GREEN 绿色 黑色 DKGRAY BLUE 蓝色 深灰 GR Ay 黄色 灰色 YELLOW LT CYAN 青色 浅灰 W MAGENTA 玫红 白色 RE RANSPARENT 透明 红色 2610 droid Studio开发实战:从零基础到ApP!线(第2b 2.使用十六进制的颜色编码。 在布局文件中设置颜色需要在色值前面加“#"”,如 android: textColor-"#00000代码 中设置颜色可以直接填八位的十六进制数值(如 set Textcolor(0moo),也可以通过 Color. rgb(int red, int green, int blue)i和 Color. argb( int alpha, int rec, Int green,, int blue,)这两种方法 指定颜色在代码中一般不要用六位编码,因为六位编码在代码中默认透明,所以代码用六位 编码跟不用没什么区别。 3.使用 colors. xml I中定义的颜色 res/values目录下有个 colors. xml文件,是颜色常量的定义文件。如果要在布局文件中使 用XML颜色常量,可引用“@coo常量名”;如果要在代码中使用XML颜色常量,可通过 这行代码获取: getResources().getColor(R color常量名)。 720 2.1.3屏幕分辨率 在AP编码中时常要取手机的屏幕分辨率(如当前屏幕的宽和高),然后动态调整界面 上的布局。在代码中获取分辨率就是想办法获得 Display Metrics对象,然后从该对象中获得宽 度、高度、像素密度等信息。下面是 Display Metrics类的常用属性说明 · width Pixels:以px为单位计量的宽度值。 heightPixels:以px为单位计量的高度值 density:像素密度,即一个dp单位包含多少个px单位。 下面是获取当前屏幕的宽度、高度、像素密度的代码示例。 获得屏幕的宽度 oublic static int get Screen Width(Context ctx)( ∥从系统服务中获取窗口管理器 接着 Window Manager wm=(Window Manager) ctx. getSystemService( Context WINDOW SERVICE 2.2 Display Metrics dm=new Display Metrics() ∥从默认显示器中获取显示参数保存到dm对象中 m.getDefaultDisplayO.getMetrics(dm 而V return dm. widthPixels;∥返回屏幕的宽度数值 上用 ∥获得屏幕的高度 public static int getScreenHeight(Context ctx)( 从系统服务中获取窗口管理器 WindowManager wm =(Window Manager) ctx.getSystemService( Context WINDOW SERVICE); DisplayMetrics dm=new Display Metrics 从默认显示器中获取显示参数保存到dm对象中 wm.getDefaultDisplayO.getMetricsdm) return dm. heightPi ∥返回屏幕的高度数值 第2章初级控件27 代码 ∥获得屏幕的像素密度 人通过 public static float getScreen Density( Context ctx)( 中方法 从系统服务中获取窗口管理器 月六位 WindowManager wm=(Window Manager) ctx.getSystem Service( Context WINDOW SERVICE) DisplayMetrics dm=new Display Metrics( ∥从默认显示器中获取显示参数保存到dm对象中 wm.getDefaultDisplayO. getMctrics(dm) return dm density;∥返回屏幕的像素密度数值 牛中使 可通过 宀、从一个接入设备上获得屏幕分辨率信息,如图2-4所示。该设备为5寸屏幕,分辨率是 77 *1280,像素密度是2 Junior 整界面 当前屏幕的宽度是720pX,高度 获得宽 是1280px,像素密度是200000 图24某手机上的分辨率信息 2.2简单布局 本节开始介绍 Android的基本视图和布局,首先说明基本视图view类的常用属性和方法, 接着描述如何使用线性布局 Linear Layout,最后介绍滚动视图 Scrollview的用法 ICE); 221视图Vew的基本属性 VieW是 Android的基本视图,所有控件和布局都是由view类直接或间接派生而来的。故 而Vew类的基本属性和方法是各控件和布局通用的,掌握好基本属性和方法,在哪里都能派 上月场,能够举一反三、事半功倍 下面是视图在XML布局文件中常用的属性定义说明 id:指定该视图的编号 layout width:指定该视图的宽度。可以是具体的φ数值;可以是 match parent,表示与 上级祝图一样宽;也可以是 wrap content,表示与内部内容一样宽(内部内容若超过上级 ICE) 视图的宽度,则该视图保持与上级视图一样宽,超出宽度的内容得进行滚动才能显示出 来) layout height:指定该视图的高度。取值说明同 layout width ayout margin:指定该视图与周围视图之间的空白距离(包括上、下、左、右)。另 分别表示单独指定视图与上边、下边、左边、右边视图的距离 layout marginRight *i layout marginTop, layout margin Bottom, layout marginLeft 28 Android Studio开发实战:从零基础到App上线(第2版) min Width:指定该视图的最小宽度 是指 midHeight:指定该视图的最小高度。 眼看翟 background:指定该视图的背景。背景可以是颜色,也可以是图片。 局文作 ayout gravity:指定该视图与上级视图的对齐方式。对齐方式的取值说明见表22,若 同时适用多种对齐方式,则可使用竖线“”把多种对齐方式拼接起来 表2对齐方式的取值说明 Gravity类中的对齐方式 说明 XML中的对齐方式 LEFT 靠左对齐 left RIGHT 靠右对齐 向上对齐 top bottom BOTTOM 向下对齐 center CENTER 居中对齐 center horizontal CENTER HORIZONTAL 水平方向居中 center vertical CENTER VERTICAL 垂直方向居中 padding:指定该视图边缘与内部内容之间的空白距离。另有 padding Top padding Bottom、 padding、 padding Right分别表示指定视图边缘与内容上边、下边 左边、右边的距离 visibility:指定该视图的可视类型。可视类型的取值说明见表23 表23可视类型的取值说明 XML中的可视类型VeW类中的可视类型 说明 visible Ⅵ ISIBLE 可见。默认值 invisible Ⅰ NVISIBLE 不可见。虽然看不到但还占着位置 one GONE 消失。不仅看不到而且不占位置了 下面是视图在代码中常用的设置方法说明。 最后 间层的I setLayoutParams::设置该视图的布局参数。参数对象的构造函数可以设置视图的宽度是60 和高度.其中, LayoutParams MATCH PARENT表示与上级视图一样宽,也可以是的距离 LayoutParams. WRAP CONTENT,表示与内部内容一样宽;参数对象的 setmargins 法可以设置该视图与周围视图之间的空 正好 白距离 um Width:设置该祝图的最小宽度 便从实际 · setMinimumHeight:设置该视图的最小高度 层与外部 set BackgroundColor:设置该视图的背景颜色。 内部图层 ● setBackgroundDrawable:设置该视图的背景图片 视图 setBackgroundR ource 设置该视图的背景资源 类视图都 paDding:设置该视图边缘与内部内容之间的空白距离 类, 类 set Visibility:设置该视图的可祝类型。取值说明见表23 在 于:布月 前面提到 margin和 padding两个概念, margin是指当前视图与周围视图的距离, padding 的实体 节点下的 第2章初级控件29 是指当前视图与内部内容的距离。这么说可能有些抽象,所谓百闻不如一见,说得再多不如亲 眼看看是怎么回事。接下来做个实验,看看它们的显示效果有什么不同。下面是实验用的布 局文件源代码,以背景色观察每个控件的区域范围 2,若 <!-最外层的布局背景为蓝色-> <liNearlayoutxmlns:android="http://sch hemas android. com/apk/res/android android: layout width="match parent'" android: layout_ height=300dp droid: background=#00aaff' android: orientation="vertical" android: padding="5dp"> <!-中间层的布局背景为黄色-> <Linear Layout android: layout width="match parent android: layout height=match parent' android: layout margin="20dp android: background="#ffff99" 下边 android: padding="60dp"> !-最内层的视图背景为红色-> lew android: layout width="match parent android: layout height="match parent" android: background=#ff0000"/ <Linear Layout> <Linear layout> 最后的界面效果如图25所示。布局文件处于中Ju 间层的 LinearLayout,设置 margin 是20dp、 padding 的宽度 是60dp。从效果图可以看到,中间层与上级视图之间 可以是 的距离大约是中间层与下级视图之间距离的三分之 LL SuIS ,正好是 margin和 padding两个数值的比例。如此 便从实际情况中印证了: layout_ margin指的是当前图 层与外部图层的距离,而 padding指的是当前图层与 内部图层的距离。 视图组 Vicw Group是一类特殊视图,所有的布局 类视图都是从它派生而来的。 Android中的视图分为两 类,一类是布局,另一类是控件。布局与控件的区别 图25 margin和 padding的演示画面 在于:布局本质上是个容器,里面还可以放其他视图(包括子布局和子控件);控件是一个单 的实体,已经是最后一级,下面不能再挂其他视图。打个比方,如果把根节点看作树干,根 节点下的各级布局就是树枝,一根树枝可以连着其他小树枝,也可以直接连树叶;树叶只能依 Quipped 3010dd5d发实战:从零基础到Ap线(第2板 附在树枝上,不能再连树枝或其他树叶。 View Group有3个方法,这3个方法也是所有布局类视图共同拥有的。 w:往布局中添加一个视图 remove view:从布局中删除指定视图 removeAllview:删除该布局下的所有视图。 2.22线性布局 LinearLayout LinearLayout是最常用的布局,名字叫线性布局。顾名思义, Linear Layout下面的子视图 就像用一根线串了起来,所以 LinearLayout内部视图的排列是有顺序的,要么从上到下依次垂 直排列,要么从左到右依次水平排列。 Linear Layout除了继承 View/View Group类的所有属性 和方法外,还有其特有的XML属性,说明如下。 orientation:指定线性布局的方向。 horizontal表示水平布局, vertical表示垂直布局 如果不指定该属性,就默认是 horizontal,这真是出乎意料,因为大家感觉手机App 理应从上往下垂直布局,所以这里要特别注意垂直布局一定要设置 orientation,不然 默认的水平布局不符合多数业务场景 gravity:指定布局内部视图与本线性布局的对齐方式。取值说明同 layout gravity。 layout weight:指定当前视图的宽或高占上级线性布局的权重。这里要注意, layout weight属性并非在当前 LinearLayout节点中设置,而是在下级视图的节点中设置 另外,如果 layout weight指定的是当前视图在宽度上占的权重, layout width就要同时 设置为0dp;如果 layout weight指定的是当前视图在高度上占的权重, layout height就 要同时设置为0p 下面是 LinearLayout在代码中增加的两个方法 ● reorientation:设置线性布局的方向。 Linear Layout HORIZONTAL表示水平布局, LinearLayout VERTICAL表示垂直布局。 setGravity:设置布局内部视图与本线性布局的对齐方式。具体的取值说明见表2-2 接下来重点解释 layout gravity和 gravity的区别。前面说过, layout gravity指定该视图与 上级视图的对齐方式,而 gravity指定布局内部视图与本布局的对齐方式。为方便理解,下面 通过一个具体例子演示两种属性的显示效果。下面是演示用的XML布局文件,内部指定了多 种对齐方式,其中左边视图的 layout gravity是 bottom, gravity是let;右边视图的 layout gravity 是top、 gravity是ight,布局文件内容如下: -最外层的布局背景为橙色,它的下级布局在水平方向上依次排列 inearlayoutxmins:android="http://schemas.androidcom/apk/res/android" android: layout width="match parent" Idroid: layout height=3 android: background-"#iffff99 droid rientation="he padding="5 you 第2章初级控件31 <!-第一个子布局背景为红色,它与上级布局靠下对齐,它的下级视图则靠左对齐-> android: layout width="Odp android: layout height="200dp android: layout weight= android: layout gravity="bottom!" android: gravity="left 图 android: background=#ff0000 垂 android: layout margin="10dp 性 android: padding="10dp android: orientation="vertical"> <!-内层视图的宽度和高度都是100dp,且背景色为青色 pp <View 不然 android: layout width="100dp'" android: layout height="100dp android: background=#00fiif"7> <Linearlayout> 意 殳置。 !-第二个子布局背景为红色,它与上级布局靠上对齐,它的下级视图则靠右对齐一 同时 Linear Layout 就 android: layout width="Odp android: layout height-200dp android: layout weight-"I android: layout gravity="top android: gravity="right 局 android: background=#ff0000 android: layout margin="10dp -2 android: padding="lOdp 见图与 android: orientation="vertical" 下面 <!-内层视图的宽度和高度都是100dp,且背景色为青色-> 已了多 Miers android: layout width="100dp android: layout height="100dp android: background=#00ffff'/ </Linear> </Linearlayout> 运行后的界面效果如图2-6所示。从效果图可以看到,左边视图自身向下对齐,符合 layout gravity的设置,下级视图靠左对齐,符合 gravity的设置:右边视图自身向上对齐,符 合 layout gravity的设置,下级视图靠右对齐,符合 gravity的设置。 odsd发实线:从零基磁P 上线(第2版 32 Androl Junior 图26 layout gravity和 gravity的演示界面 22.3滚动视图 ScrollView 手机屏幕的显示空间有限,常常需要上下滑动或左右滑动才能拉出其余页面内容,可惜 Android的布局节点都不支持自行滚动,这时就要借助 Scrollview滚动视图实现了。与线性布 局类似,滚动视图也分为垂直方向和水平方向两类,其中垂直滚动的视图名是 Scrollview,水 平滚动的视图名是 HorizontalScrollview。这两个滚动视图的使用并不复杂,主要注意以下3点 (1)垂直方向滚动时, layout width要设置为 match parent, layout height要设置为 wrap content (2)水平方向滚动时, layout width要设置为 wrap content, layout height要设置为 match parent (3)滚动视图节点下面必须且只能挂着一个子布局节点,否则会在运行时报错Ca aused by java. lang. IllegalState Exception: ScrollView can host only one direct child 下面是滚动视图 Scrollview和水平滚动视图 Horizontalscrollview的XML用法示例: <liNearLayoutxmins:android-="http://schemas.android.com/apk/res/android' droid: layout width="match parent android: layout height="match parent' vertical> l- Horizonta lscrollview是水平方向的滚动视图,当前高度为20 <HorizontalScroll view android: layout width wrap content android: layout height=200dn 性赋 水方向的线性视图,两个子视图的颜色分别为青色和黄色 性设 android: layout width ap content droid: layout he atch parent" andro itation= horizont

...展开详情
试读 36P android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf 48积分/C币 立即下载
1/36
android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf第1页
android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf第2页
android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf第3页
android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf第4页
android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf第5页
android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf第6页
android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf第7页
android studio 开发实战:从零基础到App上线(第二版)【第二章】初级控件.pdf第8页

试读结束, 可继续读3页

48积分/C币 立即下载 >