美文网首页
Android自定义View

Android自定义View

作者: huqj | 来源:发表于2018-06-09 14:36 被阅读0次

    自定义组件相信在面试过程中会经常被问到自定义组件相关问题,最近总结了下自定义View的方式;

    总结来说,自定义控件的实现有三种方式,分别是:组合控件、自绘控件和继承控件。下面将分别对这三种方式进行介绍。

    (一)组合控件:

    像平常项目中,我们会经常自定义一个ToolBar, 多个页面都会需要这个标题栏,为了让代码复用性更强,一般会自定义一个ToolBar;

    带着问题,我们会想到在继承View的构造函数中 有个AttributeSet这个属性,没错  这就是 突破口。

    我们可以在attrs.xml中声明自己控件的属性,在布局xml文档中声明自己的命名空间,这时就可以对设置自己想要的值了,然后在AttributeSet这个属性中获取对应的值。好了不多说,我们来看下代码,一切尽在不言中:

    第一步:

    在/res/values下编写一个attrs.xml的文件,其中内容结构如下:

    第二步:

    自定义ToolBar,在构造方法中通过AttributeSet这个属性中获取对应的值。

    final TypedArray a =context.obtainStyledAttributes(attrs,R.styleable.MyToolbar,0,0);遍历这个返回的TypedArray然后进行获取定义好的属性值;

    不要忘记添加 xmlns:app="http://schemas.android.com/apk/res-auto",然后就可以直接在自定义view中直接描述定义的属性,入标题,右边按钮的名字等;

    在自定义ToolBar中可以实现一些方法,入按钮的事件监听,设置标题文本的方法:

    (一)自绘控件:

     自绘控件的内容都是自己绘制出来的,在View的onDraw方法中完成绘制。下面就实现一个简单的计数器,每点击它一次,计数值就加1并显示出来。

    1、创建CounterView类,继承自View,实现OnClickListener接口:

    (三)继承控件:

     就是继承已有的控件,创建新控件,保留继承的父控件的特性,并且还可以引入新特性。下面就以支持横向滑动删除列表项的自定义ListView的实现来介绍。

    创建CustomListView类,继承自ListView,并实现了OnTouchListener和OnGestureListener接口:

    相关文章

      网友评论

          本文标题:Android自定义View

          本文链接:https://www.haomeiwen.com/subject/lzuteftx.html