Android快速自定义控件+实战演示(一)新手进阶必看!

本文介绍了如何在Android中快速创建自定义圆盘按键控件,无需重写onDraw等方法。通过继承LinearLayout,设置布局和数据,实现键盘的圆盘样式。并展示了设置选中事件的实现过程,以及数据交换的逻辑,为遥控器操作提供了便利。
摘要由CSDN通过智能技术生成

前言

说到自定义控件,随便百度一下,都是继承View或者ViewGroup,然后重写onMeasure,onLayout,onDraw,其实实战开发中有更简单快捷的方法,那就是直接继承XXXLayout,然后导入xml布局,下面我将用一个实例来讲解。

这一节会讲到知识点有:
1.如何快速、简单自定义控件(完全不需要重写onDraw,onMeasure,onLayout哦!)

项目目标

现在要求实现一种自定义键盘,效果如图:
自定义键盘
这个键盘一般用于用遥控器控制的键盘,可以看到这个键盘比较特殊的地方就是展开后是一个圆盘状的小键盘,首先我们就对这个圆盘小键盘先进行自定义。

自定义圆盘按键

自定义布局

根据圆盘的布局,我准备采用LinearLayout,分三行,中间一行又是三列,除了最中间的是Button,其他都是TextView。(布局文件又臭又长,我就只讲思路,不贴代码了。)布局文件取名为custom_keyboard_item_circle.xml

然后新建一个类,取名为CustomCircleKeyboardItem.java,继承LinearLayout,重写它的构造方法,其实就是在原来的构造方法之后加上我们的自定义功能:

    public CustomCircleKeyboardItem(final Context context, final AttributeSet attrs, final int defStyle) {
        super(context, attrs, defStyle);
        load();
    }

    public CustomCircleKeyboardItem(final Context context, final AttributeSet attrs) {
        super(context, attrs);
        load();
    }

    public CustomCircleKeyboardItem(final Context context) {
        super(context);
        load();
    }

可以看到我只是在每个构造方法后都加了一个方法load()。下面看load里面:

    private void load() {
        if (isInEditMode()) {
            return;
        }
        inflateLayout();
        initUI();
        initData();
    }

load里面很简单,三个方法,第一个是引入本类对应的布局,这样可以少写很多代码,不用用代码去写添加各种view;第二个方法是初始化UI,在这里得到想要控制的UI及设置一些初始状态;第三个方法是初始化一些初始数据。(这样的分类完全是个人习惯,可以不用照搬。)
现在,我们只要实现第一个方法就可以,把刚刚写好的布局文件加进来:

    /**
     * @Description inflate the main layout
     */
    private vo
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值