zoukankan      html  css  js  c++  java
  • android自定义样式大全:shape,selector,layer-list,style,动画全部内容

    原文:http://keeganlee.me/post/android/20150830

    以下摘取了部分内容:

    shape

    一般用shape定义的xml文件存放在drawable目录下,若项目没有该目录则新建一个,而不要将它放到drawable-hdpi等目录中。只需要在对应控件设置(bg_rectangle_with_stroke_dash.xml)

    android:background="@drawable/bg_rectangle_with_stroke_dash"

    四种类型

    使用shape可以自定义形状,可以定义下面四种类型的形状,通过android: shape属性指定:

    • rectangle: 矩形,默认的形状,可以画出直角矩形、圆角矩形、弧形等
    • oval: 椭圆形,用得比较多的是画正圆
    • line: 线形,可以画实线和虚线
    • ring: 环形,可以画环形进度条

    selector

    有时候,不同状态下改变的不只是背景、图片等,文字颜色也会相应改变。而要处理这些不同状态下展示什么的问题,就要用selector来实现了。 一个<item/>包裹一个状态和对应的效果

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 当前窗口失去焦点时 -->
        <item android:drawable="@drawable/bg_btn_lost_window_focused" android:state_window_focused="false" />
        <!-- 不可用时 -->
        <item android:drawable="@drawable/bg_btn_disable" android:state_enabled="false" />
        <!-- 按压时 -->
        <item android:drawable="@drawable/bg_btn_pressed" android:state_pressed="true" />
        <!-- 被选中时 -->
        <item android:drawable="@drawable/bg_btn_selected" android:state_selected="true" />
        <!-- 被激活时 -->
        <item android:drawable="@drawable/bg_btn_activated" android:state_activated="true" />
        <!-- 默认时 -->
        <item android:drawable="@drawable/bg_btn_normal" />
    </selector>
    而下面则是text_btn_selector.xml的代码,用于按钮的文本颜色:
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 当前窗口失去焦点时 -->
        <item android:color="@android:color/black" android:state_window_focused="false" />
        <!-- 不可用时 -->
        <item android:color="@android:color/background_light" android:state_enabled="false" />
        <!-- 按压时 -->
        <item android:color="@android:color/holo_blue_light" android:state_pressed="true" />
        <!-- 被选中时 -->
        <item android:color="@android:color/holo_green_dark" android:state_selected="true" />
        <!-- 被激活时 -->
        <item android:color="@android:color/holo_green_light" android:state_activated="true" />
        <!-- 默认时 -->
        <item android:color="@android:color/white" />
    </selector>
     

    Layer-List

    image使用layer-list可以将多个drawable按照顺序层叠在一起显示,像上图中的Tab,是由一个红色的层加一个白色的层叠在一起显示的结果

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 第一种加载方式 -->
        <!--<item android:drawable="@drawable/bg_tab_selected" android:state_checked="true" />-->
        <!-- 第二种加载方式 -->
        <item android:state_checked="true">
            <layer-list>
                <!-- 红色背景 -->
                <item>
                    <color android:color="#E4007F" />
                </item>
                <!-- 白色背景,白色背景距离底部越远,漏出来的红色部分就越多 -->
                <!-- 效果就是看到的粗的红色的线 -->
                <item android:bottom="4dp" android:drawable="@android:color/white" />
            </layer-list>
        </item>
        <item>
            <layer-list>
                <!-- 红色背景 -->
                <item>
                    <color android:color="#E4007F" />
                </item>
                <!-- 白色背景 -->
                <item android:bottom="1dp" android:drawable="@android:color/white" />
            </layer-list>
        </item>
    </selector>

    属性

    • solid:设置形状填充的颜色
    • padding:内容与形状边界的内间距
    • gradient: 设置形状的渐变颜色,可以是线性渐变、辐射渐变、扫描性渐变
    • corners: 设置圆角,只适用于rectangle类型
    • stroke: 设置描边,可描成实线或虚线
    • size:设置形状默认的大小,可设置宽度和高度

    动画

    • 视图动画的xml文件放于res/anim/目录下,,引用时为R.anim.filename。
    • <animator>属性动画的xml文件则放于res/animator/目录下。用引用时为R.animator.filename

    Style

    • Android的样式一般定义在res/values/styles.xml文件中,其中有一个根元素<resource>,而具体的每种样式定义则是通过<resource>下的子标签<style>来完成,<style>通过添加多个<item>来设置样式不同的属性。
    • 另外,样式是可以继承的,可通过<style>标签的parent属性声明要继承的样式,也可通过点前缀 (.) 继承,点前面为父样式名称,后面为子样式名称。点前缀方式只适用于自定义的样式,若要继承Android内置的样式,则只能通过parent属性声明。
    • 样式的用法不只是用于单个View,也能用于Activity或整个Application,这时候需要在相应的<activity>标签或<application>标签里设置android:theme属性,引用的其实也是style,但一般称为主题。

     

     

  • 相关阅读:
    Redis 学习之路 (009)
    树莓派进阶之路 (012)
    树莓派进阶之路 (011)
    树莓派UFW防火墙简单设置
    树莓派进阶之路 (002)
    Redis学习之路(008)- Redis C语言客户端库hiredis文档翻译
    Redis学习之路(007)- Redis学习手册(实例代码)
    树莓派进阶之路 (000)
    Redis学习之路(006)- Redis学习手册(Hashes数据类型)
    Redis学习之路(005)- redis内存数据库C客户端hiredis API 中文说明
  • 原文地址:https://www.cnblogs.com/Mihai/p/5777685.html
Copyright © 2011-2022 走看看