位置: 编程技术 - 正文

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)

  • 一般纳税人购销合同印花税计税依据
  • 申报表填完后下一步是什么
  • 旅游公司如何缴费
  • 缴纳个人社保在哪里可以缴
  • 关联公司往来款算应收账款吗
  • 施工企业收到工程款交付税款的时间
  • 个人所得税交税怎么交的
  • 过渡期损益会计分录
  • 已付款已收货但发票未到账务处理怎么做
  • 其他货币资金包括
  • 本月做未开票收入,下月开票怎么做账
  • 产品不合格造成客户损失怎么赔付
  • 公司车辆出售给个人怎么做账
  • 公允价值变动损益属于当期损益吗
  • 会计科目的使用说明应包括
  • 现金买东西可以退吗
  • 建筑企业新项目增值税的计算
  • 全国失信人员信息
  • 理财产品取得收益要交税吗
  • 费用报销是先记账后付款还是先付款后记账
  • 加计扣除税怎么出分录
  • 固定资产合计等于固定资产账面价值吗
  • windows修复网络
  • psimsvc.exe - psimsvc是什么进程 有什么用
  • Linux Kernel 4.5在3月15日发布最终版
  • 借支单还款后借支单要还么
  • go是单进程还是多进程
  • php入门课程
  • php \t
  • 公司购买股票的流程
  • 转租会计如何记账
  • vue设置图片
  • 微信小程序实现灯泡开关效果
  • php中array_unshift()修改数组key注意事项分析
  • 深度测试软件
  • Vue3通透教程【四】Vue3组合API初体验
  • 公司购买办公用品会计分录
  • 会计中财务费用为负
  • 房地产公司土地计入什么科目
  • 固定资产入账是税前还是税后
  • 时区时间对照表
  • php判断数据库用户名是否存在
  • 海关进口增值税专用缴款书如何抵扣
  • 生产企业出口退税申报流程操作
  • 增值税税控系统专用设备
  • 资产负债表应交税费是负数正常吗
  • 银行汇票计入什么会计科目
  • 被投资单位信息是什么
  • 房租转租怎么处理合法
  • 预付卡充值入什么科目
  • 企业清算未收到发票
  • 酒店代金券是什么意思
  • 中国的法律依据是什么
  • 小规模汽车维修管理制度
  • 药品进销差价科目明细
  • 去年的会计凭证做错了,今年发现要怎么修改
  • 应收的货款
  • 稽查人员是干嘛的
  • mysql子查询效率如何
  • Win10 Mobile 10549 预览版新功能上手体验视频
  • mac应用图标不见了怎么办
  • ubuntu20.04 vim
  • 中国有多少台百万机组
  • win7旗舰版64位系统开机时软件设置自动启动详细图文教程
  • 如何关闭win8自带杀毒
  • javascript数据结构与算法
  • eclipse 单词
  • 简述android应用的常用开发模式及其优缺点
  • 简单的分享一下
  • js原生dialog
  • python import怎么用
  • jquery中常用动画方法有哪些
  • 开源项目怎么做
  • jquery实现ajax提交表单信息的简单方法(推荐)
  • python模块怎么用
  • android 入门教程
  • python中私有函数调用方法解密
  • 河南查询税务登记怎么查
  • 个税申报所属期和所得期
  • 地下车库质保期多久
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设