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 ...
随机推荐
- how find out what is causing Visual Studio to think each project is out of date
You can find out what is causing Visual Studio to think each project is out of date, and then addres ...
- J2EE十三个技术规范
从事Java开发的童鞋都知道,java是一种非常棒的语言,能够实现跨平台运行.它屏蔽了具体的平台环境的要求,也就是说,无论是windows,还是Unix.Linux系统,只要支持Java虚拟机,就可以 ...
- Java 详解 JVM 工作原理和流程
Java 详解 JVM 工作原理和流程 作为一名Java使用者,掌握JVM的体系结构也是必须的.说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java ...
- Error during artifact deployment. See server log for details.
Error during artifact deployment. See server log for details. 这两个地方要一样.不然.就报 Error during artifact d ...
- linux中open函数使用
open函数用来打开一个设备,他返回的是一个整型变量,如果这个值等于-1,说明打开文件出现错误,如果为大于0的值 参考格式 if(fd=open("/dev/ttys0",O_RD ...
- java.lang.String (JDK1.8)
String类实现了java.io.Serializable, Comparable<String>, CharSequence这三个interface. 看了下这三个interface中 ...
- 私活利器,docker快速部署node.js应用
http://cnodejs.org/topic/53f494d9bbdaa79d519c9a4a 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维, ...
- vue初体验
作为一个前端的小菜鸟,在平时的开发与学习中,除了要深入了解javascript 及 css 的各种特性,熟悉一门框架也是必不可少的.vue以其小巧,轻便,学习平滑等各种特性深受欢迎. 这里总结一下小菜 ...
- chrome.debugger
官网: https://chromedevtools.github.io/devtools-protocol/ https://developer.chrome.com/extensions/debu ...
- Python学习—基础篇之文件操作
文件操作 文件操作也是编程中需要熟练掌握的技能,尤其是在后台接口编写和数据分析过程中,对各种类型的文件进行操作,获取文件信息或者对信息进行存储是十分重要的.本篇博客中将主要对常见的文本格式文件和Exc ...