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

  • 相关阅读:
    定时自动备份数据库
    读<你必须知道的.NET>小结3
    [转载]手把手教你用C#打包应用程序(安装程序)【卸载模块已添加】
    集成测试
    P2P
    20110818炒股日记急拉慢跌的走势
    xp sp3安装IIS
    调用ASP.NET工作流:承载及限制
    20110822炒股日记进入筑底阶段
    用Duplex实现消息广播
  • 原文地址:https://www.cnblogs.com/tozhjj/p/7132550.html
Copyright © 2020-2023  润新知