位置: 编程技术 - 正文

Android自定义View的用法总结(android自定义viewgroup绘制)

编辑:rootadmin
本文参考了: SDK中提供了很多UI组件,如RelativeLayout, LinearLayout等,使用自定义控件有两大优点:1、通过减少View的使用来增加UI的显示效率2、构建SDK中没有的控件原文总结了4种自定义View,分别是Composite View, Custom Composite View, Flat Custom View和Async Custom Views。示例代码在 和Smoothie.Picasso

推荐整理分享Android自定义View的用法总结(android自定义viewgroup绘制),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android自定义viewgroup,android自定义view流程,android自定义view的实现,android自定义view流程,android自定义view流程,android自定义view属性,android自定义view的三大流程,android自定义view的三大流程,内容如对您有帮助,希望把文章链接给更多的朋友!

Picasso是一个异步图片加载库,Smoothie提供了异步加载ListView和GridView数据项的接口,使列表数据的加载更加顺滑。

本文只介绍Composite Vew 和 Custom Composite View的方法,这两种方式足够我们使用了,剩余两种方法需要自定义一套控制视图的框架,维护代价高,建议只用在app的核心且稳定的UI中,感兴趣的读者可自行研究。

Composite View此方法是将多个View结合成一个可重用View的最简单方法,过程如下:1、自定义控件,继承相应的控件。2、在构造函数中填充一个merge布局3、初始化自定义控件中的内部View

4、提供刷新View的接口

下面介绍了一个用法,该View的布局如下图所示:

首先是定义一个类文件TweetCompositeView.java

该类继承自RelativeLayout,实现了TweetPresenter的接口以更新UI。构造函数中初始化内部的View

布局文件tweet_composite_view.xml中的merge tag减少了布局的层次

这种方法自定义的View用法简单,维护也方便。但这种方式自定义的View的UI子View较多,对于复杂的View,将影响遍历效率。打开手机设置中的显示布局边界选项,效果图如下所示:

Android自定义View的用法总结(android自定义viewgroup绘制)

Android某些控件如RelativeLayout,LinearLayout等容器控件,需要多次遍历子View来确定自身的属性,如LinearLayout的weight属性。如果能针对自己的App自定义子View的计算和定位逻辑,则可以极大的优化UI的遍历。这种做法便是接下来介绍的Custom Composite View

Custom Composite View

相比Composite View的方法,一个Custom Composite View继承自一个ViewGroup,并实现了onMeasure和onLayout方法。下面的TweetLayoutView便是一个Custom Composite View.

TweetLayoutView.java

这个类的布局文件仍然是tweet_composite_view.xml,构造函数中初始化内部的View,与Composite View的不同之处在于,它通过重载onMeasure和onLayout方法来确定内部View的尺寸和位置。基本思路是过程通过ViewGroup’s 的measureChildWithMargins() 方法和背后的 getChildMeasureSpec() 方法计算出了每个子视图的 MeasureSpec 。这个自定义View的效果图的布局层次如下图所示,和Composite View的层次一样,但这个View的遍历开销要少于前者。

如果想进一步优化关键部分的UI,如ListView和GridView,可以考虑把Custom Composite View合成单一的View统一管理,使得到的View的层次如下图所示:

要达到这个效果,需要参考Flat Custom View的自定义View方式,刚兴趣读者可参考源代码。

android Menu详解 onCreateOptionsMenu() Android的onCreateOptionsMenu()创建菜单Menu详解时间--::ITeye-博客原文

Android多线程之handler 前言Android的消息传递机制是另外一种形式的事件处理,这种机制主要是为了解决Android应用中多线程的问题,在Android中不允许Activity新启动的线程访问该

android的动画之translate Android动画之translate(位移动画)上一篇文章讲了Android的左右滑动切换,实现过程是非常简单,一些新手可能会向深入了了解Activity切换的原理,下面主要

标签: android自定义viewgroup绘制

本文链接地址:https://www.jiuchutong.com/biancheng/384271.html 转载请保留说明!

上一篇:Android中Strings.xml使用占位符示例

下一篇:android Menu详解 onCreateOptionsMenu()(android中menu)

  • 个体工商户一直没办税务登记证
  • 销项税额期末余额
  • 湖南税务申报期限2023年1月
  • 税前利润计算公式变动成本法
  • 法人转钱入公户怎么做会计分录
  • 水利基金在哪个科目核算
  • 什么时候用以前年度损益调整什么时候用年初未分配利润
  • 电子发票冲红处理
  • 待抵扣进项税额转出会计分录
  • 计提长期债券利息分录怎么做
  • 厂房推倒重建房产税
  • 子公司给总公司开发票
  • 员工借款可以直接转账吗
  • 进出口经营权什么意思
  • 航天金税财务软件使用说明
  • 上个月申报错了怎么办
  • 自主就业退役士兵从事个体经营的
  • 纳税人备案信息包括
  • 金税盘和税控盘和ukey
  • 合并报表利润表是当期还是累计
  • 金蝶软件如何修改凭证号
  • 小规模企业税务简易注销
  • 固定资产的折旧从什么时候开始
  • 收到利息收入会计分录怎么写
  • 制造业购买纸箱子记入什么科目
  • ukey开票界面
  • 医疗废物处置费是什么意思
  • 受托加工物资的账务处理例题
  • 商事账簿编制的一般规则是什么
  • 为什么win7系统用不了谷歌浏览器了
  • 广告公司发生的广告代工费账务怎么处理
  • win11怎么创建新用户
  • PHP:pg_client_encoding()的用法_PostgreSQL函数
  • memory tester
  • ati2plab.exe是什么进程 ati2plab进程安全吗
  • PHP:mcrypt_generic()的用法_Mcrypt函数
  • 固定资产终止确认的会计处理
  • 房产税城镇土地使用税税源信息采集
  • list集合过滤
  • 2023前端面试题目
  • 跨期发票的形成条件
  • 织梦使用教程
  • mongodb4.0安装教程
  • 临时工工资账务处理该怎么进行
  • 投资收益交增值税税率是多少
  • 物业费的税可以抵扣吗
  • 会计报表编制基本要求
  • 小规模纳税人指的是谁
  • 未开票的收入如何申报增值税
  • 收到赠送的样品附件
  • 核定征收的一般纳税人进项税额抵扣
  • 职工教育经费调增
  • 企业计提任意盈余公积的比例
  • 培训费产生的差额是什么
  • 个人出租租房收什么税
  • mybatis分页插件的原理
  • 微软星期二补丁KB3022345导致USB设备无法识别怎么办?
  • windows xp开机按f12是什么操作
  • mac怎么隐藏桌面文件
  • 苹果mac怎么查看运行数据
  • windows重置网卡cmd
  • itunes清理iphone垃圾
  • schedul2.exe - schedul2是什么进程 有什么用
  • mcclauncher.exe
  • win7旗舰版要求
  • win10查看电脑配置显卡
  • 麒麟系统怎么执行命令
  • replace函数怎么替换
  • 摄像机跟随与摄像的区别
  • unity摄像机范围
  • 批处理设置文件夹添加user组权限
  • jquery get(0)
  • jquery自带的弹出框
  • 百度定位服务平台
  • js中判断
  • javascript 二维数组搜索
  • 重庆电子税务局怎么开电子发票
  • 如何查询企业税号
  • 非经营性房屋具体指哪些?
  • 重庆税务局发票作废怎么处理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设