重学Android:自定义View基础(一)

前言

作为一名安卓开发,也被称为大前端,做一个美观的界面,是我们必备的基础技能,可能在开发中我们最常用的是系统自带的View,因为他能满足绝大部分需求,难一点的我们也可以上Github上找个三方库使用,少数情况下会让我们进行自定义View,当然这不代表着我们可以不去掌握其原理,因为它是通往中高级程序员的必经之路,也是大厂面试的热门知识,只有熟练掌握其核心原理,才能让我们在后续的开发中游刃有余。

由于这是开篇文章,说的有点多,笔者是想借着写博客的机会,把那些最不经意的基础打牢一下,并且加上自己的拙见与大家分享,共同进步。

自定义View简介

自定义View是Android开发中的一种常见需求,它允许开发者创建复杂的用户界面组件,以满足特定的设计需求。自定义View的好处在于可以完全控制View的外观和行为。常见的是 extend Viewextend ViewGroup 以及系统自带的View

1. onMeasure


onMeasure方法用于测量View的尺寸。它的主要任务是决定View的宽度和高度。以下是一个简单的自定义View示例,它在onMeasure中实现了固定大小的测量逻辑。

示例代码

public class CustomView extends View {
   
    public CustomView(Context context) {
   
        super(context);
    }

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

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
   
        // 期望的宽高
        int desiredWidth = 200;
        int desiredHeight = 200;

        // 获取父View提供的宽高
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);

        // 测量宽度
        width = MeasureSpec.getMode(widthMeasureSpec) == MeasureSpec.EXACTLY ?
                width : desiredWidth;

        // 测量高度
        height = MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.EXACTLY ?
                height : desiredHeight;

        // 设置测量后的宽高
        setMeasuredDimension(width, height);
    }
}

2. onDraw


onDraw方法用于绘制View的内容。在此方法中,使用Canvas绘制图形或文字。

示例代码

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Paint paint = new Paint(); // 创建画笔
    paint.setColor(C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值