Android自定义view的一些实践

俗话说 :好记性不如烂笔头 鲁迅说:烂笔头不如在记一下(鲁迅:“我从没说过那句话!”) 所以  我就在记一下 主题如标题 内容   在下面。

What?

看名字就知道了( 自定义 的 View)

Why?

为什么要自定义View?

主要是Android系统内置的View无法实现我们的需求,我们需要针对我们的业务需求定制我们想要的View。(理想很丰满,现实很骨感!)

How?

怎样实现自定义View

首先 安卓自定义View 有三种实现方式:1,扩展;2,组合;3,重写。打个比方解释:1.蒸汽机(TextView)已经有了但还不足以满足人类需要,所以瓦特改良了蒸汽机(xxx extends TextView{ 我是改良。。})。2.手机充电器 -- A有usb线  B有充电头 把他们组合起来(xxx extends ViewGroup) 就可以充电了。3.我们都有一个家名字叫中国(View),我们每个人的家又各不相同(xxx extends View)。

王阳明说“知行合一”,所以我决定 一个一个的实践一遍。(一种方式举一个栗子!)

1.扩展方式

目标:简单点---“给文字加个边框和背景”

异议:这个原生就可以很容易实现了啊,干什么还要写什么自定义view,浪费表情

反驳:你说的对 可我就要这样!

Android自定义view的一些实践_第1张图片
扩展方式

代码分析:继承了TextView 重写onDraw()方法 黄色画笔画矩形布满控件 绿色画笔画的是四周内移10的矩形 推测看到的是黄边绿底的

扩展 ---效果

2.组合方式

目标:就类似那种title带回退键,标题的那种 可以通用

简图:

就类似这种

功能分析:1.要能设置标题; 2.回退键有外部点击事件;3 消息图标由外部点击事件;消息图标可隐藏

Android自定义view的一些实践_第2张图片
组合方式

代码里有注释就不解释了 可以看到构造函数里有一段代码 引用资源文件(LayoutInflater.from(context).inflate(R.layout.top_layout,this);):

Android自定义view的一些实践_第3张图片
top_layout.xml部分

这是部分xml代码  全部代码 也就外面套着一个RelativeLayout 标签。恩!在这里顺带熟悉一下在AndroidStudio里自动生成矢量图的方法:就如上面代码中引用的图片资源都是系统生成的。

2.x AndroidStudio里自动生成矢量图

Android自定义view的一些实践_第4张图片
step1

然后就出现下面界面:

Android自定义view的一些实践_第5张图片
step2

好吧 然后点击安卓图标那个键就可以选图标啦

Android自定义view的一些实践_第6张图片
step3

然后选中一个点击Ok 后面就一气呵成 在这就不做赘述啦

3.重写方式

目标:要画一个可以动的波浪线 最好有个圆圈在头部 也能一起动

异议:为什么做这种没用的东西

反驳:好玩啊

额。。。。

想象中的图:

Android自定义view的一些实践_第7张图片
哈哈!就类似这样(笑喷)

 看看代码吧

Android自定义view的一些实践_第8张图片
重写方式

效果图:

Android自定义view的一些实践_第9张图片
效果图

恩 然后 意味深长 的对自己和大家 道声:“周末愉快!!!”

你可能感兴趣的:(Android自定义view的一些实践)