什么是资源?
- 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标签
- 引用样式
- 所有控件或者布局
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,但是控件或者布局宽高为定值并且不相等,那么永远无法成为一个圆形!所以说,如果想显示圆形,还需要控件本身配合,宽高自适应,或者写两个相同的值!
- corner圆角
状态图片
- 提高用户体验度!在开发中,美工肯定会给两种图片!这种图片都是用来做状态图片,最常用的状态图片: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,那么该控件,不能点击也不能选中!
- android:state_pressed按下状态,用于按钮。
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)
- 怎么读取assets包资源?