Android权威编程指南笔记 第二十二章 样式与主题(未完)

第二十二章 样式与主题(与二十三章 xml drawable合并)

样式

  • 样式是用于一个组件的属性
  • 每次使用时都需要指定
    <style name="BeatBoxButton" >
        <item name="android:background">@drawable/button_beat_box</item>
    </style>
  • 可以继承,但要在同一个包中
    <style name="BeatBoxButton.Strong" >
        <item name="android:textStyle">bold</item>
    </style>

主题

  • 主题是样式的升级版, 可以为所有相同组件统一定制.
  • 使用方法:
  1. 通过层层递增的方法向上查找, 找到父类中的属性
  2. 通过名称尝试覆盖相应的属性作为尝试(使用parent )
    1.如果是资源, 可以直接在主题中覆盖并修改属性
    <item name="android:windowBackground">@color/soothing</item>
    2.如果是样式, 继承相应的样式并修改其中的属性. 在主题中同时进行覆盖
    查看到的父类是:
        <!-- Button styles -->
        <item name="buttonStyle">@style/Widget.AppCompat.Button</item>
        <item name="buttonStyleSmall">@style/Widget.AppCompat.Button.Small</item>
        <item name="android:textAppearanceButton">@style/TextAppearance.AppCompat.Widget.Button</item>
  • 使用
    <item name="buttonStyle">@style/BeatBoxButton</item>
    <style name="BeatBoxButton" parent="Widget.AppCompat.Button">
        <item name="android:background">@drawable/button_beat_box</item>
    </style>
  • 不需要在组件中进行引用.
  • 如果想在组件中引用主题, 可以采用xml或代码两种方法
    1.android:background"?attr/colorAccent
    2.代码方式较为麻烦. P367

XML drawable

  • 凡是在屏幕上绘制的东西都可以叫drawable, 比如抽象图形, Drawable类的子类代码, 位图图像等.
  • xml drawable有三类子类:
    1.shape drawable: 定义的样式, 有六种属性(stroke, solid等)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <solid
        android:color="@color/dark_blue"/>

</shape>
  1. state list drawable 指向不同的资源文件, 做出选择. 支持按下, 禁用, 聚焦, 激活等状态
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_button_beat_box_pressed"
        android:state_pressed="true"/>

    <item android:drawable="@drawable/ic_button_beat_box_default"/>

</selector>
  1. layer list drawablw能做出层级的感觉
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="oval">
            <solid
                android:color="@color/red"/>
        </shape>
    </item>

    <item>
        <shape
            android:shape="oval">
            <stroke
                android:width="4dp"
                android:color="@color/dark_red"/>
        </shape>
    </item>

</layer-list>

相关小记

  • 使用颜色资源, 可以在一处定义各种颜色值, 然后在整个应用里引用
  • 可以为应用启动图标准备不同的匹配像素, 并放在mipmap目录中, 其他图片都放在drawable目录中
  • 9-patch的使用:
    1.将.png格式的图片文件名改为.9.patch
    2.对于九宫格中的区域, 规则是2, 4, 6, 8做一维单侧拉伸, 5做二维拉伸. 其余地方不做拉伸

挑战练习

  1. 去掉按下按钮的阴影
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值