文档章节

零门槛!ZBLibrary仿微信朋友圈自定义View,就是这么简单!

孤独的探索号
 孤独的探索号
发布于 2016/04/26 18:39
字数 670
阅读 5.6K
收藏 0

传统方法是继承现有View再重写方法,这种方式缺点很多:

1.往往不能在xml编辑器中预览效果;

2.比较难实现预期效果,比如设置宽度为wrap_content,实际显示为match_parent等;

3.需要在xml代码中声明自定义View的全路径,经常无法自动补全,需要手动复制粘贴路径;

4.一旦自定义View修改了全路径(移动至其它package、删除等),xml代码中并不会同步,但能编译通过,然后在渲染这个自定义View时崩溃;

5.需要学习draw,measure等平时比较少用的方法;

6.需要维护大量代码,constructor就得重写3个。

使用ZBLibrary自定义View,以上通通不是问题!!!

最终效果图和源码如下

下载试用 TestSelfDefineView.apk

下载源码 TestSelfDefineView.zip

 

 

如何使用ZBLibrary自定义View

一、准备

1.依赖ZBLibrary

 

2.分别复制DemoView,demo_view,KeyValueBean到你自己项目的对应目录下 

二、使用

这里以MainActivity和MainActivity的界面布局activity_main做示范

1.在activity_main中的根布局(最外层布局)内添加以下代码

 <LinearLayout

        android:id="@+id/llMainContainer"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical" >

 </LinearLayout>

 

  

2.添加以下代码到MainActivity的onCreate方法或者它里面调用的方法中。

 

ImageLoaderUtil.init(this);

 

LinearLayout llMainContainer = (LinearLayout) findViewById(R.id.llMainContainer);

llMainContainer.removeAllViews();

 

DemoView demoView = new DemoView(this, null);

llMainContainer.addView(demoView.getView());

 

KeyValueBean data = new KeyValueBean("KEY", "123");

demoView.setView(data);

 

 

3.修改复制过来的DemoView中的KeyValueBean路径为你项目中的路径,这里为 com.example.testselfdefinview.KeyValueBean,然后运行看效果

 

  

三、修改

1.分别改名称为你需要的,这里分别改为MyView,MyBean,my_view以作示范。

 

 

2.将MyView中import zuo.biao.library.R;中的zuo.biao.library路径替换为你项目的路径。

 

3.将MyView中的demo_view改为my_view;将MainActivity,MyView,my_view中的"DemoView"全部改为"MyView"。

 

4.运行测试。如果出现问题,检查以上步骤。

 

5.到这一步,将MyView看成一个Activity,将my_view看成这个Activity的界面布局,然后修改MyView,MyBean,my_view代码为你想要的,就这么简单!

 

注:ZBLibrary自定义View方式不是万能的,实现一些特殊功能还是要用继承现有View的方式,不过在大多数情况下ZBLibrary都能用并且比继承现有View好很多。

 

 

ZBLibrary-Android快速开发框架

下载地址(欢迎Star,欢迎Fork)

https://github.com/TommyLemon/Android-ZBLibrary

下载试用

ZBLibraryDemoApp.apk

© 著作权归作者所有

孤独的探索号

孤独的探索号

粉丝 154
博文 23
码字总数 29911
作品 5
深圳
私信 提问
加载中

评论(1)

孤独的探索号
孤独的探索号 博主
最近ZBLibrary升级后修改了部分方法:
Activity中initListener、OnFinishListener(可去掉)已经改为initEvent、OnBottomDragListener了;
ShowView中getView()改为createView(LayoutInflater inflater)了
BaseView的子类ShowView构造器
  public ShowView(Activity context, LayoutInflater inflater) {
    super(context, inflater);
  }

改为
  public ShowView(Activity context, Resources resources) {
    super(context, resources);
  }
ZBLibrary 19.0 发布,Star 数已达 3K

更新内容: 新增一键自动删除所有编译缓存 build 目录的 Window 批处理脚本 clearAllBuildCache.bat; getActivity 抽象到 BaseActivity; 解决条形码与预览框的水平倾角超过30%识别不了,感...

孤独的探索号
2018/11/28
2.5K
0
TommyLemon/Android-ZBLibrary

ZBLibrary-Android快速开发框架 坐标标准库ZBLibrary,是一个MVP架构的Android快速开发框架,提供一套开发标准(View,Data,Event)以及模板和工具类并规范代码。 封装层级少,简单高效兼容性...

TommyLemon
2016/04/21
0
0
Android快速开发框架 - Android-ZBLibrary

ZBLibrary-Android快速开发框架 MVP架构的Android快速开发框架, 提供一套开发标准(View,Data,Event)以及模板和工具类并规范代码。 封装层级少,简单高效兼容性好。 OKHttp、UIL图片加载、...

孤独的探索号
2016/04/21
6.9K
5
APIJSON 3.7.3 发布,完善 JFinal、PostgreSQL 支持与文档

APIJSON 3.7.3 更新内容: 完善中文和英文文档,感谢洛杉矶小姐姐的贡献,国际化更进一步; 更新 PostgreSQL 的测试表,官网已支持直接测试 MySQL,PostgreSQL 两种数据库; 同步 APIJSONBoo...

孤独的探索号
2019/09/17
1.9K
0
uni-app聊天App实例|仿微信聊天界面|朋友圈

最近一直在捣鼓uniapp技术开发,前段时间就有使用uniapp实现了自定义导航栏及模态弹窗组件,想着后续开发个仿微信聊天项目,今天就给大家分享基于uniapp开发的聊天室。 uniapp自定义导航栏:...

xiaoyan2015
2019/10/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

UNION和UNION ALL有什么区别? - What is the difference between UNION and UNION ALL?

问题: UNION和UNION ALL什么区别? 解决方案: 参考一: https://stackoom.com/question/CzF/UNION和UNION-ALL有什么区别 参考二: https://oldbug.net/q/CzF/What-is-the-difference-betw......

javail
17分钟前
6
0
007. J.U.C 之锁的使用

1. Lock API 1. Locks 包类层次结构 2. Lock 接口 方法签名 描述 void lock(); 获取锁(不死不休) boolean tryLock(); 获取锁(浅尝辄止) boolean tryLock(long time, TimeUnit unit) throws ......

紫穹
今天
74
0
略谈分布式系统中的容器设计模式

本文作者:zytan_cocoa 略谈分布式系统中的容器设计模式 谭中意 2020/3/5 前言:云原生(Cloud Native)不仅仅是趋势,更是现在进行时,它是构建现代的,可弹性伸缩的,快速迭代的计算网络服...

百度开发者中心
03/11
168
0
a small thing that made me a little bit depressed

It was just two hours ago,specificly speaking It was 11:48 almost coming close to midneight. I was pratising singing songs in my renting room which is a sharing apartment . I re......

lost_myself
今天
174
0
OSChina 周日乱弹 —— 这中间几个月的地震、核爆、外星人、高达... 去哪了

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Elizabeth》- Ashram 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪维 :#共...

小小编辑
今天
275
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部