位置: 编程技术 - 正文

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)

  • 进口货物增值税纳税人是谁
  • 递延所得税负债账务处理
  • 税收分类方法表格
  • 居民个税和非居民个税哪个高
  • 加计抵扣进项税额政策2022
  • 出口发票开错了如何处理
  • 为什么征收增值税体现了量益原则
  • 期初试算平衡表不平衡怎么查
  • 冲销主营业务收入后导致发生额变大
  • 企业向个人借款需要交印花税吗
  • 企业怎么申请无运输工具承运资质
  • 营业外支出税前可以扣除吗
  • 年底增值税专用发票入帐不勾选抵扣帐务处理
  • 免税销售额扣除项目本期实际扣除额
  • 合同印花税多交了怎么退
  • 金税盘费用到期
  • 发生的费用可以直接计入主营业务成本吗
  • 金蝶k3初始余额录入打不进字
  • 华为鸿蒙一键抠图
  • 房产税如何进行计提
  • 实收资本账户的核算内容是什么
  • 生产企业结账流程
  • 认缴出资日期没到
  • 出售无形资产的净损失不应计入
  • 资产减值损失结转怎么算
  • 取得企业债券利息为什么要交个人所得税
  • 橡皮树的养殖方法视频教程
  • 国有划拨土地给集体企业怎么办
  • zend框架教程
  • 企业购买烟酒可以抵扣吗
  • php生成随机字母数字代码
  • 计算机视觉opencv 有什么项目
  • 残差网络中的残差指的是什么
  • 前端工程化解决方案
  • python3 字典遍历
  • 预缴和缴纳的区别
  • 异地工程预缴税款时间
  • 个人出租房可开发票吗
  • 供热企业税收优惠
  • 私对公可以转账吗?会对做账不利吗
  • c++operator详解
  • python requests检测响应状态码
  • 在dedecms中,如何模板建站
  • 织梦标签教程
  • 运输费用会计
  • 采购商品没有进账怎么做账
  • 存货的计税基础公式
  • 增值税普通发票和专用发票有什么区别
  • 出口退税的发票是专票还是普票
  • 应收帐款的帐务处理流程
  • 银行贷款直接给钱吗
  • 进项税留底怎么处理
  • 非公司股东可以分红吗
  • 确定固定资产的标准
  • 持有至到期投资改名为
  • 公司股东为另一家公司全股
  • sql语句错误提示
  • mysql数据库数据备份
  • mysql_error
  • xp系统如何开启共享文件夹
  • FastDFS4和Ubuntu12安装及部署步骤
  • linux怎么用u盘传输文件
  • xp怎么删除电脑系统
  • windows开发教程
  • w10操作系统内部版本
  • linux的shm共享内存
  • [置顶] [寒江孤叶丶的Cocos2d-x之旅_29]在Cocos2d-x中集成protobuf (Protocol Buffers)
  • 动画时期
  • 提高网站性能
  • android开发基础知识
  • js操作对象的方法
  • jquery使用教程
  • javascript怎么定义二维数组
  • 重新税务登记程序有哪些
  • 固定资产转让要交企业所得税吗
  • 纳税人总机构和分机构不在同一县怎么办
  • 西宁市房屋维修基金收费标准2021
  • 医保报销是按自然年计算吗
  • 国税地税数据共多少
  • 讲话和讲话精神的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设