美文网首页Android知识程序员
Android自定义view的一些实践

Android自定义view的一些实践

作者: 海水未顶 | 来源:发表于2017-04-08 17:27 被阅读111次

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

    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);):

    top_layout.xml部分

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

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

    step1

    然后就出现下面界面:

    step2

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

    step3

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

    3.重写方式

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

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

    反驳:好玩啊

    额。。。。

    想象中的图:

    哈哈!就类似这样(笑喷)

     看看代码吧

    重写方式

    效果图:

    效果图

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

    相关文章

      网友评论

        本文标题:Android自定义view的一些实践

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