Android开发秘籍学习笔记(九)

 目录为Android开发秘籍学习笔记有关用户界面布局的相关笔记

 其实呢,要学习有关Android用户界面布局的开发,我们还是必须得利用Google提供给我们的Android Design,鉴于很多人无法翻墙,有的网站提供了镜像供我们访问学习,网址:http://adchs.github.io/,安卓巴士同样提供了相关的镜像大家也可以去访问http://www.apkbus.com/design/

   但我还是把《Android开发秘籍》这本书上的有关用户界面布局的笔记整理出来吧


Android中尺度单位:

 我们在写Android的布局文件的时候经常会用到一些尺度单位,Android中有pxdp(dip)spinmm,pt这些尺度单位。
  1. px: 屏幕上实际的像素值
  2. dp(dip):独立于设备的,相对一个160dpi屏幕的像素值,这里又提到了dpi,dpi(ppi)是像素密度,即是每英寸上的像素点,计算方法为 dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数,dpi越高则表示每英寸上的像素点越多,屏幕显示也越清晰,dp(dip)与屏幕尺寸和分辨率无关,而与它们两的比值相关,dp(dip)和px有个简单的换算关系 dp*ppi/160 = px,所以当dpi等于160时,1dp = 1px
  3. sp:独立于设备的像素值,根据用户字体大小的偏好进行调整。
  4. in:基于屏幕物理尺寸的英寸只。
  5. mm:基于屏幕物理尺寸的毫米值
  6. pt:以1/72英寸大小的点来度量的值,同样基于屏幕的物理尺寸。

Android中颜色的表示:

  1. 12位颜色值#rgb。
  2. 带alpha透明通道的16位颜色值#argb
  3. 24位颜色值#rrggbb
  4. 带alpha透明通道的32位颜色值#aarrggbb

Android项目中的资源目录:

  Android项目中各个文件夹的作用,课本上有很详细的笔记,我在这里就不介绍了,初学者也应该对此有所了解。接下来我就说说横竖屏的切换布局文件的加载问题。我们自己在使用Android手机的时候有时候需要切换屏幕方向(应用程序没有固定屏幕方向的时候),切换屏幕方向的时候我们的布局文件可能就无法适应屏幕了。所以有时候我们需要编写两个布局文件,一个横屏,一个竖屏的。那么Android系统是如何切换布局文件呢?我们又该如何编写程序呢?Android在这个方面真的是非常的人性化,我们不需要编写任何代码,只需要按照下列步骤就能在屏幕切换时自动加载相应的布局文件。
  方法:在res目录下建立layout-land和layout-port目录,相应的layout文件名不变,比如:layout-land是横屏的layout,layout-port是竖屏的layout,其他的不用管,横竖屏切换时程序调用Activity的onCreate方法中的setContentView(xxx),并自动加载相应的布局。(注意layout-land和layout-port下的布局文件的名字是需要一致的,否则无法正确加载
  还有其他编代码的方式,但我自己没有测试也就不贴出来了,大家可以去看http://blog.youkuaiyun.com/junhuahouse/article/details/38109125

零散笔记:

  布局文件有太多的控件,所以这些笔记就不整理了,基本只要多写写就能记得住。下面就是些零散的实验:
  margin和padding的区别:padding是UI元素的一部分,它值算在控件的长度中。
                                             margin不被计入UI元素的大小中,margin的值不计算在控件的长度中。

相对布局中的重要属性:

相对于兄弟元素
android:layout_below="@id/aaa":在指定View的下方
android:layout_above="@id/xxx":在指定View的上方
android:layout_toLeftOf="@id/bbb":在指定View的左边
android:layout_toRightOf="@id/cccc":在指定View的右边
相对于父元素
android:layout_alignParentLeft="true":在父元素内左边
android:layout_alignParentRight="true":在父元素内右边
android:layout_alignParentTop="true":在父元素内顶部
android:layout_alignParentBottom="true":在父元素内底部
对齐方式
android:layout_centerInParent="true":居中布局
android:layout_centerVertical="true":水平居中布局
android:layout_centerHorizontal="true":垂直居中布局
android:layout_alignTop="@id/xxx":与指定View的上边界一致
android:layout_alignBottom="@id/xxx":与指定View下边界一致
android:layout_alignLeft="@id/xxx":与指定View的左边界一致
android:layout_alignRight="@id/xxx":与指定View的右边界一致
间隔
android:layout_marginBottom=""; 离某元素底边缘的距离
android:layout_marginLeft=""; 离某元素左边缘的距离
android:layout_marginRight ="";离某元素右边缘的距离
android:layout_marginTop=""; 离某元素上边缘的距离
android:layout_paddingBottom=""; 离父元素底边缘的距离
android:layout_paddingLeft=""; 离父元素左边缘的距离
android:layout_paddingRight ="";离父元素右边缘的距离
android:layout_paddingTop=""; 离父元素上边缘的距离


EdtiText中的重要属性:


  inputType:
   android:inputType="none"
  android:inputType="text"
  android:inputType="textCapCharacters" 字母大写
  android:inputType="textCapWords" 首字母大写
  android:inputType="textCapSentences" 仅第一个字母大写
  android:inputType="textAutoCorrect" 自动完成
  android:inputType="textAutoComplete" 自动完成
  android:inputType="textMultiLine" 多行输入
  android:inputType="textImeMultiLine" 输入法多行(如果支持)
  android:inputType="textNoSuggestions" 不提示
  android:inputType="textUri" 网址
  android:inputType="textEmailAddress" 电子邮件地址
  android:inputType="textEmailSubject" 邮件主题
  android:inputType="textShortMessage" 短讯
  android:inputType="textLongMessage" 长信息
  android:inputType="textPersonName" 人名
  android:inputType="textPostalAddress" 地址
  android:inputType="textPassword" 密码
  android:inputType="textVisiblePassword" 可见密码
  android:inputType="textWebEditText" 作为网页表单的文本
  android:inputType="textFilter" 文本筛选过滤
  android:inputType="textPhonetic" 拼音输入 //数值类型
  android:inputType="number" 数字
  android:inputType="numberSigned" 带符号数字格式
  android:inputType="numberDecimal" 带小数点的浮点格式
  android:inputType="phone" 拨号键盘
  android:inputType="datetime" 时间日期
  android:inputType="date" 日期键盘
  android:inputType="time" 时间键盘

ImageView和ImageButton的重要属性:

  ScaleType:

scaleType的属性值有:matrix   fitXY  fitStart   fitCenter  fitEnd  center   centerCrop  centerInside 

它们之间的区别如下:

matrix 用矩阵来绘制(从左上角起始的矩阵区域)

fitXY  把图片 不按比例扩大/缩小到View的大小显示(确保 图片会完整显示,并充满View)

  fitStart  把图片 按比例扩大/缩小到View的宽度,显示在View的上部分位置( 图片会完整显示

fitCenter  把图片 按比例扩大/缩小到View的宽度,居中显示( 图片会完整显示

fitEnd   把图片 按比例扩大/缩小到View的宽度,显示在View的下部分位置( 图片会完整显示

center  按图片的原来size居中显示,当图片宽超过View的宽,则截取图片的居中部分显示,当图片宽小于View的宽,则图片居中显示
 
centerCrop  按 比例扩大/缩小图片的size居中显示,使得图片的高等于View的高,使得图片宽等于或大于View的宽
 
centerInside  将 图片的内容完整居中显示,使得图片按比例缩小或原来的大小(图片比View小时)使得图片宽等于或小于View的宽 ( 图片会完整显示


上面两幅图片中,一副是图片大小小于ImageView的大小的,另一幅是图片大小大于ImageView的大小的。此处转载自 http://blog.youkuaiyun.com/xilibi2003/article/details/6628668
下面这幅图片是ImageButton的:

  

通过selector选择器为Button设置点击的视觉效果:

  一般的selector选择器的写法如下:
<?xml version="1.0" encoding="utf-8" ?>   
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- 默认时的背景图片 -->  
  <item android:drawable="@drawable/pic1" />    
<!-- 没有焦点时的背景图片 -->  
  <item android:state_window_focused="false"   
        android:drawable="@drawable/pic1" />   
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->  
  <item android:state_focused="true" android:state_pressed="true"   
        android:drawable= "@drawable/pic2" />  
<!-- 触摸模式下单击时的背景图片 -->  
  <item android:state_focused="false" android:state_pressed="true"   
        android:drawable="@drawable/pic3" />   
<!--选中时的图片背景  -->  
  <item android:state_selected="true"   
        android:drawable="@drawable/pic4" />   
<!--获得焦点时的图片背景  -->  
  <item android:state_focused="true"   
        android:drawable="@drawable/pic5" />   
</selector>


最后只需要在<Button />里加两项。 
     android:backgroud="@drawable/button_src"。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值