传统方法是继承现有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

零门槛!ZBLibrary仿微信朋友圈自定义View,就是这么简单!的更多相关文章

  1. Android 仿微信朋友圈发动态功能(相册图片多选)

    代码分享 代码名称: 仿微信朋友圈发动态功能(相册图片多选) 代码描述: 仿微信朋友圈发动态功能(相册图片多选) 代码托管地址: http://www.apkbus.com/android-15276 ...

  2. Android NineGridLayout — 仿微信朋友圈和QQ空间的九宫格图片展示自定义控件

    NineGridLayout 一个仿微信朋友圈和QQ空间的九宫格图片展示自定义控件. GitHub:https://github.com/HMY314/NineGridLayout 一.介绍 1.当只 ...

  3. Android 仿微信朋友圈添加图片

    github地址(欢迎下载Demo) https://github.com/zhouxu88/WXCircleAddPic 老习惯,先上图,着急用的朋友,直接带走Demo,先拿来用吧,毕竟老板催的紧, ...

  4. Android 高仿微信朋友圈动态, 支持双击手势放大并滑动查看图片。

    转载请注明出处:http://blog.csdn.net/sk719887916/article/details/40348873 作者skay: 最近参与了开发一款旅行APP,其中包含实时聊天和动态 ...

  5. React Native(九)——实现仿微信朋友圈发表动态功能

    好像很久都没写博客了,罪过罪过~ 许是因为刚接触App有点生疏不得窍门吧,这个月还没有更新过文章.小个把月下来,还是觉得应该边学边总结,这样才能像大神靠近(最近刚接触同业的大牛级人物,还是从中学到了很 ...

  6. Android 仿微信朋友圈发表图片拖拽和删除功能

    朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...

  7. Android仿微信朋友圈,全文收起功能,附源码

    在众多的社交类软件中,朋友圈是必不可少的,可以与好友.同学等分享自己的日常和有意思的事情,在开发社交类App时,朋友圈发表的内容你不可能让他全部显示,全部显示的话用户体验度会非常不好,这时就要用到全文 ...

  8. ReactNative仿微信朋友圈App

    摘要: 欢迎各位同学加入: React-Native群:397885169 大前端群:544587175 大神超多,热情无私帮助解决各种问题. 一.前沿||潜心修心,学无止尽.生活如此,coding亦 ...

  9. iOS - 仿微信朋友圈视频剪切功能

    分析需求 我们先看一看微信的界面 微信效果图 1.页面下部拖动左边和右边的白色竖条控制剪切视频的开始和结束时间,预览界面跟随拖动位置跳到视频相应帧画面,控制视频长度最长15秒,最短5秒 2.拖动下部图 ...

随机推荐

  1. linux常识

    一.linux常识 1.为什么学习linux及如何学习linux? 基于linux的操作系统是一种自由和开放源代码的类UNIX操作系统,其定义组件是linux内核,其稳定性.安全性.处理多并发已经得到 ...

  2. tomcat 7 中的类加载器学习

    tomcat 7自带很多junit测试用例,可以帮助我们窥探源码的秘密.以下使用来测试类加载器的一个测试用例.类加载器也是对象,他们用来将类从类从.class文件加载到虚拟机,这些已经讲了很多,深入j ...

  3. HW7.11

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  4. HW6.26

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  5. connect to a specific wifi network in Android programmatically

    http://stackoverflow.com/questions/8818290/how-to-connect-to-a-specific-wifi-network-in-android-prog ...

  6. 配置OpenStack以使用LDAP实现身份管理

    本文展示了如何配置 Keystone,以便使用轻量级目录http://www.aliyun.com/zixun/aggregation/34570.html">访问协议( LDAP)服 ...

  7. A Tour of Go Function closures

    Go functions may be closures. A closure is a function value that references variables from outside i ...

  8. Keil µVision4 中出现中文乱码的解决办法

    首先得说一下,以前都没有遇到过类似的问题,但是看到有个同学曾经满篇的乱码那叫个心疼. 这里我所说的办法其实只是格式转换的问题,对于其他原因造成的,可能会在以后遇到的时候再来处理了.另外,在将代码文件转 ...

  9. hdu 5586 Sum【dp最大子段和】

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5586 Sum Time Limit: 2000/1000 MS (Java/Others)    Me ...

  10. React Native通信机制详解

    React Native是facebook刚开源的框架,可以用javascript直接开发原生APP,先不说这个框架后续是否能得到大众认可,单从源码来说,这个框架源码里有非常多的设计思想和实现方式值得 ...