Material Design学习之 CheckBox(详细分析,富有表现力)

本文详细介绍了Material Design中的CheckBox控件,包括其设计原则、颜色要求和两种主题。文章通过代码分析了CheckBox的实现过程,包括尺寸初始化、背景色设置、文字内容处理以及手势操作响应。同时,提供了源码地址供读者参考学习。
摘要由CSDN通过智能技术生成

转载请注明出处:王亟亟的大牛之路

这些天一直在讲Material Design控件的内容,今天继续,说说CheckBox(妈蛋,好冷),上一篇的传送门:http://blog.csdn.net/ddwhan0123/article/details/50560638

老规矩,两部分,第一部分理论知识,第二部分代码

选择控制器

选择控制器允许用户选择选项。有三种类型:复选框、单选框以及开/关切换。选择控制器使用主题同样的颜色。(待会的代码主要讲的是单选按钮)

复选框

单选按钮

切换开关

官方对呈现的样式,颜色,透明度等都有严格的要求和定义,如下:

分为2个主题,1为白色主题,2为黑色主题

白色

开: Swatch 500, 透明度 100%

关: #000000, 透明度 54%

失效: #000000, 透明度 26%

黑色

开: Swatch 500, 透明度 100%

关: #FFFFFF, 透明度 70%

失效: #FFFFFF, 透明度 30%

这里补充下,你所有的点击操作都希望带有一定的外部反应(也就是之前一直有的,手指触控反馈,就是那个圈圈)

像这样:

这里写图片描述

这一部分的理论知识没有之前那么多,因为之前的一系列理论知识都是统一的,每个控件都有大体的设计方向,只是实现不同而已,我们来看下实现效果:

这里写图片描述

包结构:

这里写图片描述

部分功能寄存于我们之前的CustomView这个类,不理解的可以翻开之前的解释看下,很详细。

主要实现类就是CheckBox这个类,我们来读代码!!

public class CheckBox extends CustomView

26行,继承于我们之前的CustomView,是个RelativeLayout。

int backgroundColor = Color.parseColor("#4CAF50");

    Check checkView;

    boolean press = false;
    boolean check = false;

    OnCheckListener onCheckListener;

    public CheckBox(Context context, AttributeSet attrs) {
        super(context, attrs);
        setAttributes(attrs);
    }

28-40行,声明一些变量包括背景色,以及构造函数初始化View

   // Set atributtes of XML to View
    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    protected void setAttributes(AttributeSet attrs) {

        setBackgroundResource(R.drawable.background_checkbox);

        // Set size of view
        setMinimumHeight(Utils.dpToPx(48, getResources()));
        setMinimumWidth(Utils.dpToPx(48, getResources()));

        // Set background Color
        // Color by resource
        int bacgroundColor = attrs.getAttributeResourceValue(ANDROIDXML,
                "background", -1);
        if (bacgroundColor != -1) {
            setBackgroundColor(getResources().getColor(bacgroundColor));
        } else {
            // Color by hexadecimal
            // Color by hexadecimal
            int background = attrs.getAttributeIntValue(ANDROIDXML, "background", -1)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值