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 右边的偏移量

时间: 2024-10-24 11:14:22

android资源文件的相关文章

Android资源文件简介

Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, 资源文件; -- 界面布局文件 : 在res/layout目录下定义, 用于定义Android中界面的显示样式; -- Java源码文件 : Android程序的逻辑实现, 程序主体; -- 资源文件 : 各种XML文件, 可以定义图片等资源, 以及各种图片, 音频, 视频, 3d模型等资源; (2)

Android资源文件之创建与访问

资料来源于官方api文档 Android资源文件之创建与访问 Android适配之创建别名资源 如果你想将某一资源用于多种设备配置(但是不想作为默认资源提供), 则无需将同一资源放入多个备用资源目录中.相反,可以(在某些情况下)创建备用资源,充当保存在默认资源目录下的资源的别名. 注: 并非所有资源都会提供相应的机制让你创建指向其他资源的别名.特别是, xml/目录中的动画资源.菜单资源.原始资源以及其他未指定的资源均不提供此功能. 例如,加入你有有一个应用图片icon.jpg, 并且需要不同区

Android资源文件说明

一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, 资源文件; -- 界面布局文件 : 在res/layout目录下定义, 用于定义Android中界面的显示样式; -- Java源码文件 : Android程序的逻辑实现, 程序主体; -- 资源文件 : 各种XML文件, 可以定义图片等资源, 以及各种图片, 音频, 视频, 3d模型等资源; (

【转】关于Android资源文件中出现百分号的问题

关于Android资源文件中出现百分号的问题 分类: Android JAVA2014-08-01 16:53 1345人阅读 评论(0) 收藏 举报 ANDROID格式化资源文件 目录(?)[+] 问题编辑strings.xml的时候 在行 [html] view plaincopy <string name="myurl">http://code.dd.com/rr?q=%rr.55</string> 或者 [html] view plaincopy <

Android资源文件手记

Android Studio 的res/values文件夹为开发者提供了自定义资源文件的能力.参考Google的文档,记录一下. 一.将资源放入res目录下指定的子目录下.res目录下支持的资源目录如下: animator/ 用于定义属性动画的 XML 文件. anim/ 定义渐变动画的 XML 文件.(属性动画也可以保存在此目录中,但是为了区分这两种类型,属性动画首选 animator/ 目录.) color/ 用于定义颜色状态列表的 XML 文件. drawable/位图文件(.png..9

Android资源文件命名规范学习手册

[推荐] 资源文件需带模块前缀.[推荐] layout 文件的命名方式. Activity 的 layout 以 module_activity 开头 Fragment 的 layout 以 module_fragment 开头 Dialog 的 layout 以 module_dialog 开头 include 的 layout 以 module_include 开头 ListView 的行 layout 以 module_list_item 开头 RecyclerView 的 item la

Android资源文件中各种XML的作用与解释

众所周知,XML是一种可扩展标记语言,它被用来传输和存储数据.在Android中也会随处可见XML文件,包括一个android项目不可缺少的AndroidManifest.xml清单文件,res资源文件目录下的anim/drawable/layout/menu/values中等,目录截图如下.其中清单文件中内容最多最复杂,完全可以在其他文章中再来讲解,所以本文主要讲解res目录下的XML的作用与内容. 一.anim目录 anim目录下的xml主要是用于android中的动画,包括Frame an

读取Android资源文件

读取Assets文件夹 InputStream is = getAssets().open("read_asset.txt"); // We guarantee that the available method returns the total // size of the asset... of course, this does mean that a single // asset can't be more than 2 gigs. int size = is.availa

android 资源文件数组(string, int)

1 /** 2 * 字符串数组 3 */ 4 private String[] dirString; 5 6 /** 7 * 图片资源ID数组 8 */ 9 private int[] dirInt; 10 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 Resources res = getResources(); 15