俗话说 :好记性不如烂笔头 鲁迅说:烂笔头不如在简书记一下(鲁迅:“我从没说过那句话!”) 所以 我就在简书记一下 主题如标题 内容 在下面。
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,浪费表情
反驳:你说的对 可我就要这样!

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

2.组合方式
目标:就类似那种title带回退键,标题的那种 可以通用
简图:

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

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

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

然后就出现下面界面:

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

然后选中一个点击Ok 后面就一气呵成 在这就不做赘述啦
3.重写方式
目标:要画一个可以动的波浪线 最好有个圆圈在头部 也能一起动
异议:为什么做这种没用的东西
反驳:好玩啊
额。。。。
想象中的图:

看看代码吧

效果图:

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