Android View体系(十一)自定义ViewGroup

时间:2022-04-26
本文章向大家介绍Android View体系(十一)自定义ViewGroup,主要内容包括前言、1.继承ViewGroup、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四)从源码解析Scroller Android View体系(五)从源码解析View的事件分发机制 Android View体系(六)从源码解析Activity的构成 Android View体系(七)从源码解析View的measure流程 Android View体系(八)从源码解析View的layout和draw流程 Android View体系(九)自定义View Android View体系(十)自定义组合控件

前言

此前讲了很多,终于可以讲到这一节了,本文的例子是一个自定义的ViewGroup,左右滑动切换不同的页面,类似一个特别简化的ViewPager,这篇文章会涉及到这个系列的很多文章的内容比如View的measure、layout和draw流程,view的滑动等等,所以对View体系不大了解的同学看这篇文章前可以先从头阅读本系列的其他文章,再来看这篇文章效果会更好些。需要注意的是我们知道要实现一个自定义的ViewGroup是很复杂的,这个看看LineraLayout等源码我们就会知道,这里我们只需要把主要的功能实现就好了。

1.继承ViewGroup

要实现自定义的ViewGroup,首先要继承ViewGroup并调用父类构造方法,实现抽象方法等。

import android.content.Context;import android.util.AttributeSet;import android.view.ViewGroup;public class HorizontalView extends ViewGroup{
    public HorizontalView(Context context) {        super(context);
    }    public HorizontalView(Context context, AttributeSet attrs) {              super(context, attrs);
    }    public HorizontalView(Context context, AttributeSet attrs, int defStyleAttr) {              super(context, attrs, defStyleAttr);
    }    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
    }
}

这里我们定义了名字叫HorizontalView的类并继承 ViewGroup,onLayout这个抽象方法是必须要实现的,我们暂且什么都不做。

阅读原文