AndroidUI美化以及资源访问

什么是资源?

  • Android中的application分为两部分:
    • src(Java代码部分)
    • 资源部分(除了src都可以成为资源)
  • 资源在Android开发中必不可少!它也会随着src一起打包成apk文件!

style主题和样式

  • 主题>样式,主题中的具体属性数量会远远大于样式
    • 主题作用范围:级别是窗口,甚至一个程序!
    • 样式作用范围:具体的控件或者布局!
    • 共同点:主题和样式其实都是属性的集合!
  • 主题:
    • application:只要是作用到application上面的属性,就代表作用到整个应用上
    • activity:只要写到Activity的属性,只会作用到对应的窗口上!
    • 注意:如果application和activity同时添加了某种属性,以activity为基准
    • 如何改变application或者activity的主题?
      • android:theme这个属性,是用来定义当前application或者是activity的主题!
    • 如果需要修改主题,那么通常的手段是,在style中创建一个主题!并继承android自带的主题,在标签内部添加item标签,item标签内部写对应要修改的属性,之后引用自己定义的主题即可!
    • 注意:如果子定义的属性,和继承主题的属性发生冲突,那么会以自定义的属性为基准!
  • 样式:
    • 样式定义:
      • 样式是一种属性的集合!定义在values-style文件中(和主题在一个文件中),其跟标签也是style!
    • 样式好处:
      • 减少代码冗余
      • 减少代码出现属性错误问题
      • 控制反编译
    • 样式使用:
      • 创建样式:
        • 在style标签中创建style标签
          <style name="样式的名称"><item name="属性的名称">属性的值</item></style>
      • 引用样式
        • 所有控件或者布局
          style="@style/样式名称"
    • 样式的继承:
      • parent属性继承
      • parent.新属性 注意:在xml中引用的时候要引用全称,parent.新属性
    • 为什么要继承?
      • 继承原有属性,再添加新的属性

values资源讲解

图片资源

  • .9图片
    作用:防止图片拉伸和压缩图片变形!!
    sdk-tools
    图片上下左右:
    上:画黑线,代表水平可以拉伸的部分
    左:画黑线,代表垂直可以拉伸的部分
    右和下:右和下画黑线的交汇处代表可以写文本内容!
    注意:.9是正常后缀名,不要去掉
  • Shape自定义图片
    • 通常会在res下创建一个drawable文件夹
    • 在drawable文件夹下,创建一个xml文件,根目录选择shape
    • 在shape标签中添加android:shape,主要是用于指明想画的图形(rectangle矩形、oval椭圆、line线、ring环形)
    • shape中的属性
      • corner圆角
        • android:radius矩形的四个角的圆角半径
        • android:topLeftRadius左上角圆角半径
        • android:topRightRadius右上角圆角半径
        • android:bottomLeftRadius左下角圆角半径
        • android:bottomRightRadius右下角圆角半径
      • padding内边距
        • android:left左内边距
        • android:right右内边距
        • android:top上内边距
        • android:bottom下内边距
      • gradient渐变色,和solid冲突,只能二选一
        • android:startColor起始颜色
        • android:centerColor中间颜色
        • android:endColor结束颜色
        • android:angel颜色角度!注意:必须是45倍数
      • solid填充色,与gradient冲突
        • android:color填充的颜色
      • stroke描边
        • android:dashGap虚线间隙宽度
        • android:dashWidth虚线的长度
        • android:width线的宽度
        • android:color线的颜色
      • 定义圆形注意事项
        • 定义圆形需要在shape中定义size属性,它主要的目的就是,当空间宽高写成自适应,那么会以shape中的size属性为基准!
        • shape最终服务于控件或者布局,它的真实宽高永远由控件或者布局决定,如果你想要一个圆形的shape,但是控件或者布局宽高为定值并且不相等,那么永远无法成为一个圆形!所以说,如果想显示圆形,还需要控件本身配合,宽高自适应,或者写两个相同的值!

状态图片

  • 提高用户体验度!在开发中,美工肯定会给两种图片!这种图片都是用来做状态图片,最常用的状态图片:Button、RadioButton
  • 状态图片的使用:
    • 在res下创建drawable文件夹
    • 在drawable文件夹下,创建一个xml,根目录是selector
    • 创建item条目,每个item代表一种状态
      • 使用图片
        <item android:drawable="@drawable/图片" android:state_pressed="true"></item>
      • 使用shape
        <item android:state_pressed="true"><shape android:shape="形状">shape属性</shape></item>
  • 状态颜色的使用:不同的状态使用不同的颜色
    • 在res下创建color文件夹,必须叫color
    • 在color下创建新的xml,根目录是selector
    • 创建item
      <item android:color="颜色" android:state_checked="true"></item>
    • 一般用于字体颜色,android:textColor=”@color/创建的状态颜色”
  • 状态:
    • android:state_pressed按下状态,用于按钮。
      注意:TextView在设置点击时候,需要android:clickable=”true”设置为可点击
    • android:state_checked选中状态,通常用于RadioButton、CheckBox
    • android:state_focused是否获取焦点,通常用于EditText
    • android:state_checkable是否可以选中
    • android:state_enabled只要设置enabled等于false,那么该控件,不能点击也不能选中!

layer-list

  • 多层图片,组合图片
  • 使用步骤
    • 在res下创建一个drawable文件夹
    • 在drawable文件夹下创建一个xml,根目录是layer-list
    • 创建item
      <item android:drawable="@drawable/qq" android:bottom="16dp" android:right="12dp" android:top="4dp" android:left="4dp"></item>
      • android:drable是图片
      • bottom、top、left、right是内边距,会缩小图片

xml解析

  • xml解析:只要会解析简单的即可!
  • json解析:需要闭眼睛都会!!!

java获取资源

  • 如何获取id
    • xml:@资源类型/资源名
    • java:R.资源类型.资源名
  • 如何通过id获取资源
    • getResource().get资源类型(R.资源类型.资源名)
  • 如何通过资源名获取资源id中
    • getResources().getIdentifier(参数1,参数2,参数3)
      • 参数1:资源名称,注意:不需要加资源后缀!例如:图片 不要加后缀名,如.png
      • 参数2:资源类型,如string、drawable
      • 参数3:包名,使用getPackageName()获得包名,注意:getPackageName()是Context的方法
  • 扩展:获取assets包下文件
    • 怎么读取assets包资源?
      • 获取AssetsManager:getAssets()
      • AssetsManager.open(文件全名),返回一个InputStream
    • Bitmap是什么?
      • 位图!Android中唯一的图片格式!如果需要显示图片,那么必须转换成位图!
    • 怎么转换成Bitmap?
      • 如果想转换成位图Bitmap,必须有BitmapFactory
      • 制作方法:
        • BitmapFactory.decodeStream(InputStream)把输入流转换成Bitmap
        • BitmapFactory.decodeByteArray(byte[],0,len)把byte[]数组转换成Bitmap,一般用于转换网络请求返回的图片
        • BitmapFactory.decodeResource(resId)吧res下资源转换成Bitmap
    • Bitmap怎么赋给ImageView?
      • ImageView.setImageBitmap(Bitmap)
      • ImageView.setImageResource(resId)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值