android资源文件
代码与资源分离原则:便于维护与修改
shape:定义图形 selector:按照不同的情况加载不同的color或drawable layer-list:从下往上图形层叠加载
资源文件有:/res/drawable(图形资源及帧动画.xml)、/res/layout(界面布局资源)、/res/values(各种数据资源,eg:strings、colors、dimens etc.)
/res/menu(菜单布局资源)、/res/anim(动画资源‘补间动画’)、/res/raw(原始资源 eg:*.txt、*.mp3 etc)
/res/animator(属性动画资源)、/res/xml(xml资源文件)
values文件夹下常用文件有:
strings.xml arrays.xml(数组) colors.xml dimens.xml(尺寸) drawables.xml styles.xml(样式) themes.xml(主题)
这些资源文件在Java中的引用方式有:
getResources().getString(R.string.xx); 其他资源引用类似
对于colors:#000000、三原色(RGB)、ARGB
#RGB 三位16进制,例如#00F
#RRGGBB 六位16进制,例如#7700FF
#ARGB 四位含透明度的颜色值,例如#F00F
#AARRGGBB 八位含透明度的颜色值,例如#7700FF00
尺寸:像素 px、 点 pt、 密度独立像素(dpi) dp、比例独立像素 sp
官方推荐:控件尺寸 dp、字体尺寸 sp
尺寸转换:px to dp(dip): dp = pxValue / scale + 0.5f
常用图像资源类型: 便携式网络图像.png 其他:9格拉伸图像.9.png *.jpg *.jpeg .gif
动画分三类:anim(视图动画)、animator(属性动画)、AnimatorDrawable(帧动画) animation-list
anim: alpha(渐变透明度)、scale(渐变尺寸拉伸)、translate(画面转换位置移动)、rotate(画面转移旋转)
javaCode中:AlphaAnimation etc. tweened animation(渐变动画) frame by frame(画面转换)
不受Android平台约束的文件夹:/assets
AssetManager assets = getAssets(); assets.open(fileName);
***************
android shape使用:
shape的属性:rectangle、oval、line、ring(矩形、椭圆形、线性形状、环形)
如下属性只有当shape=ring时可用:
innerRadius 内环半径 innerRadiusRatio 浮点型,以环的宽度比率来表示内环半径
thickness 环的厚度 thicknessRatio 浮点型,以环的宽度比率来表示环的厚度
useLevel 如果当做是LevelListDrawable使用时值为true,否则为false
当shape=ring时:必须 useLevel=false;
shape 6种标签:corners、gradient、padding、size、solid、stroke
solid与gradient 不能同时用?会相互影响吗?
corners(圆角):radius(全部圆角的半径)与其他属性不能共用
gradient(渐变色):
属性:type=[linear|radial|sweep]渐变类型:线性渐变(默认)|放射渐变|扫描式渐变
angle=45 渐变角度,为45的倍数 0从左到右 90从上到下,仅对线性渐变有效
centerX centerY 渐变中心点的相对位置,范围:0~1,仅当放射渐变时有效
startColor centerColor endColor
gradientRadius=5 渐变的半径,只当type=radial时才能使用
useLevel=true|false 用于指定是否将该shape当成一个LevelListDrawable来使用,默认值为false
solid(内部填充色):只有一个属性 color
stroke(描边属性):width、color、dashWidth、dashGap 后两个属性设置虚线:宽度(值为0时实线)与间隔(值为尺寸)
size、padding: 图形大小、内部边距(基本不用)
****************
android selector使用:
selector分两种:color-selector、drawable-selector
作drawable资源使用时,放于drawable下,item 指定为drawable属性;作color资源使用时,放于/res/color下,且item指定属性为:color
item android:drawable属性除了引用@drawable资源,也可以引用@color颜色值;但android:color只能引用@color;
item是从上往下匹配的,如果匹配到一个item那它就将采用这个item,而不是采用最佳匹配的规则
设置默认的状态,一定要写在最后,如果写在前面,则后面所有的item都不会起作用了
<!-- 默认时 -->
<item android:color="@android:color/white" />
selector标签下:
android:enterFadeDuration 状态改变时,新状态展示时的淡入时间,以毫秒为单位
android:exitFadeDuration 状态改变时,旧状态消失时的淡出时间,以毫秒为单位
android:state_enabled: 设置触摸或点击事件是否可用状态,一般只在false时设置该属性,表示不可用状态
android:state_pressed: 设置是否按压状态,一般在true时设置该属性,表示已按压状态,默认为false
android:state_selected: 设置是否选中状态,true表示已选中,false表示未选中
android:state_checked: 设置是否勾选状态,主要用于CheckBox和RadioButton,true表示已被勾选,false表示未被勾选
android:state_checkable: 设置勾选是否可用状态,类似state_enabled,只是state_enabled会影响触摸或点击事件,而state_checkable影响勾选事件
android:state_focused: 设置是否获得焦点状态,true表示获得焦点,默认为false,表示未获得焦点
android:state_window_focused: 设置当前窗口是否获得焦点状态,true表示获得焦点,false表示未获得焦点,例如拉下通知栏或弹出对话框时,当前界面就会失去焦点;另外,ListView的ListItem获得焦点时也会触发true状态,可以理解为当前窗口就是ListItem本身
android:state_activated: 设置是否被激活状态,true表示被激活,false表示未激活,API Level 11及以上才支持,可通过代码调用控件的setActivated(boolean)方法设置是否激活该控件
android:state_hovered: 设置是否鼠标在上面滑动的状态,true表示鼠标在上面滑动,默认为false,API Level 14及以上才支持
关于ListView的ListItem样式,有两种设置方式,一种是在ListView标签里设置android:listSelector属性,另一种是在ListItem的布局layout里设置android:background。但是,这两种设置的结果却有着不同。同时,使用ListView时也有些其他需要注意的地方,总结如下:
android:listSelector设置的ListItem默认背景是透明的,不管你在selector里怎么设置都无法改变它的背景。所以,如果想改ListItem的默认背景,只能通过第二种方式,在ListItem的布局layout里设置android:background。
当触摸点击ListItem时,第一种设置方式下,state_pressed、state_focused和state_window_focused设为true时都会触发,而第二种设置方式下,只有state_pressed会触发。
当ListItem里有Button或CheckBox之类的控件时,会抢占ListItem本身的焦点,导致ListItem本身的触摸点击事件会无效。那么,要解决此问题,有三种解决方案:
将Button或CheckBox换成TextView或ImageView之类的控件
设置Button或CheckBox之类的控件设置focusable属性为false
设置ListItem的根布局属性android:descendantFocusability="blocksDescendants"
第三种是最方便,也是推荐的方式,它会将ListItem根布局下的所有子控件都设置为不能获取焦点。android:descendantFocusability属性的值有三种,其中,ViewGroup是指设置该属性的View,本例中就是ListItem的根布局:
beforeDescendants:ViewGroup会优先其子类控件而获取到焦点
afterDescendants:ViewGroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:ViewGroup会覆盖子类控件而直接获得焦点
*********************
layer-list的使用:
paddingMode=nest|stack
item是按照从下往上的顺序叠加的,即先定义的item在下面,后面的依次往上面叠放
android:top 顶部的偏移量
android:bottom 底部的偏移量
android:left 左边的偏移量
android:right 右边的偏移量
android资源文件的更多相关文章
- Android资源文件简介
Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, 资源 ...
- 【转】关于Android资源文件中出现百分号的问题
关于Android资源文件中出现百分号的问题 分类: Android JAVA2014-08-01 16:53 1345人阅读 评论(0) 收藏 举报 ANDROID格式化资源文件 目录(?)[+ ...
- ANDROID资源文件【转】
1. 资源包括:文本字符串.图像和图标.音频文件.视频和其他应用程序使用的组件. 2. 在Android工程中,Android资源文件是同Java类文件分开存储的,大多数常见的资源类型存储在XML ...
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...
- Android 资源文件命名与使用
[推荐]资源文件需带模块前缀 [推荐]layout 文件的命名方式 Activity 的 layout 以 module_activity 开头 Fragment 的 layout 以 module_ ...
- Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...
- Android资源文件说明
一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...
- android 资源文件
系统文档:http://developer.android.com/guide/topics/resources/available-resources.html 1. 系统下资源文件夹的名字是固定的 ...
- [置顶] Android资源文件分析
1)修改开机默认壁纸 Android开机默认资源文件为:frameworks/base/core/res/res/values/config.xml 我们找到wallpaper行: <strin ...
- 003.android资源文件剖析(Resources)
android的资源文件使用的重要性,不言而喻.让我们从潜到深逐渐来了解吧. 一:android的基本资源: 1.字符串资源 android的资源文件保存在:res\values\ 2.布局资源 an ...
随机推荐
- SpringMVC 数组类型的参数: Cannot generate variable name for non-typed Collection parameter type
我只想安静的传个数组类型的参数, 为什么各种报错... @DeleteMapping("del") @ApiOperation(value = "删除") pu ...
- SpringCloud系列三:SpringSecurity 安全访问(配置安全验证、服务消费端处理、无状态 Session 配置、定义公共安全配置程序类)
1.概念:SpringSecurity 安全访问 2.具体内容 所有的 Rest 服务最终都是暴露在公网上的,也就是说如果你的 Rest 服务属于一些你自己公司的私人业务,这样的结果会直接 导致你信息 ...
- 在阿里云Ubuntu 14.04 Linux服务器上安装docker
参考 How To Install and Use Docker: Getting Started 这篇最靠谱的文档在阿里云 Ubuntu 14.04 服务器上成功安装 docker . ---- ...
- 使用pandas进行数据预处理01
数据预处理有四种技术:数据合并,数据清洗,数据标准化,以及数据转换. 数据合并技术:(1)横向或纵向堆叠合数据 (2)主键合并数据 (3)重叠合并数据 1.堆叠合并数据: 堆叠就是简单的把两个表拼接在 ...
- centos6安装rabbitmq
一.安装依赖包 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ k ...
- cdnbest配置强制ssl跳转
如何配置强制ssl跳转 1. 登陆用户站点,点击下图图标: 2. 如下图添加证书和开启强制ssl即可 hsts解释和作用: 国际互联网工程组织IETF正在推行一种新的Web安全协议HTTP Stric ...
- Gson的入门使用
Java对象和Json之间的互转,一般用的比较多的两个类库是Jackson和Gson,下面记录一下Gson的学习使用. 基础概念: Serialization:序列化,使Java对象到Json字符串 ...
- python note 02 格式化与判断、字符串转换
1.格式化输出% %s %d name = input ('请输入姓名:') age = input ('请输入年龄:') height = input ('请输入身高:') msg = " ...
- 50-2018 蓝桥杯省赛 B 组模拟赛(五)
1.结果填空:矩阵求和 import java.math.BigInteger; import java.util.HashSet; public class Main{ public static ...
- 【CSS】自定义checkbox样式
修改原生checkbox样式. 效果 原理 1.利用CSS3属性 appearance. 该属性(强制)更改(改变)默认(原生)样式. Firefox 支持替代的 -moz-appearance 属性 ...