位置: 编程技术 - 正文

Android Support库百分比布局(android design库)

编辑:rootadmin

推荐整理分享Android Support库百分比布局(android design库),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:androidhelper库,androidui库,apk库,android 下载库,安卓support库,androidui库,androidx库,安卓support库,内容如对您有帮助,希望把文章链接给更多的朋友!

之前写过一篇屏幕适配的文章Android 屏幕适配最佳实践,里面提到了类似百分比布局的东西,但是该方法缺点很明显,就会增加很多无用的数据,导致apk包变大。

而谷歌的support库中,增加了一个叫做percent库,该库在如图目录下,如果没有,请使用sdk manager更新至最新

在使用前,我们先看下这个库有哪些类

很明显里面有一个FrameLayout布局的子类和RelativeLayout布局的子类,此外还有一个Helper类,这个Helper类主要是完成百分比的测量工作,里面有一个接口PercentLayoutParams,如果我们自己要实现百分比布局,那么就要实现这个接口。

我们看下谷歌对外公布了什么自定义属性

看到这些属性应该能直接明白这些属性的意思,其属性值类型为fraction,即小数,百分比。主要属性有宽度,高度占是百分比,外边距的百分比,其中Android MarginLeft与MarginStart的区别参考Android MarginLeft与MarginStart的区别,提取关键内容如下。

在写layout布局的时候,我们会发现有这样几个比较相似的属性: MarginStart MarginLeft MarginEnd MarginRight

这些属性的区别是什么? 根据api注释,我们得知MarginStart指的是控件距离开头View部分的间距大小,MarginLeft则指的是控件距离左边View部分的间距大小,MarginEnd和MarginRight同理。

一般情况下,View开始部分就是左边,但是有的语言目前为止还是按照从右往左的顺序来书写的,例如阿拉伯语,在Android 4.2系统之后,Google在Android中引入了RTL布局,更好了支持了由右到左文字布局的显示,为了更好的兼容RTL布局,google推荐使用MarginStart和MarginEnd来替代MarginLeft和MarginRight,这样应用可以在正常的屏幕和由右到左显示文字的屏幕上都保持一致的用户体验。

了解了这些后,我们开始使用PercentRelativeLayout

使用前加入库文件依赖

Android Support库百分比布局(android design库)

开始编写布局文件,我们要实现的效果如图所示

即左边红色部分宽度占屏幕%,高度占屏幕%,右边宽度占屏幕%,高度各占屏幕%。在不使用百分比布局之前,我们一般是使用LinearLayout的weight达到这种效果,然而使用weight会增加布局的嵌套,会过度绘制。那么使用百分比布局会变成什么样的,无需布局嵌套,设置高度宽度百分比即可。

我们要设置左边的布局宽度占%,使用app:layout_widthPercent=”%”,高度占%,为了演示另一个属性的使用,这里不直接设置高度为%,而是设置高度为%,底边距为%,即

同理编写右边两个的布局。

正如文章开头看到的,这个库只提供了两个百分比布局给我们使用,比较常见的线性布局并没有提供对应的百分比布局。因此,我们想能不能自己实现一个呢,答案是肯定的,通过观察现有的两个百分比布局的代码,我们需呀继承原来的布局,即LinearLayout,编写对应的构造方法调用父类。声明一个PercentLayoutHelper对象辅助完成百分比测量,此外还需要重写onMeasure和onLayout方法,以及一个 实现了PercentLayoutHelper.PercentLayoutParams接口的继承原来布局的LayoutParams的LayoutParams。

那么我们新建一个叫PercentLinearLayout的继承LinearLayout的类,实现其构造方法,以及声明一个final的PercentLayoutHelper 对象。

仿造现有的两个百分比布局实现内部类LayoutParams ,这一步直接复制代码修改一下即可,记得一定要继承自android.widget.LinearLayout.LayoutParams。

此外,还要重写一个生成LayoutParams 的方法generateLayoutParams,返回我们的内部类。

然后重新onLayout和onMeasure方法即可,这一步也不需要自己实现,直接复制代码即可。

就这样,完成了百分比线性布局,我们进行使用下。完成下面的效果,随意发挥的涂鸦。

主要是红色部分,从上到下,高度各为父容器的%,%,%,宽度各为父容器的%,%,,其中第三个靠右边布局,右边距为父容器的%,同时有上边距为父容器的%,看代码更直接

怎么样,是不是轻轻松松就实现了百分比布局,更多内容自行挖掘,下面上源码

版权声明:本文为博主原创文章,未经博主允许不得转载。

Github上优秀的Android开源项目常用控件 一、ListView1.android-pulltorefresh一个强大的拉动刷新开源项目,支持各种控件下拉刷新ListView、ViewPager、WevView、ExpandableListView、GridView、(Horizontal)ScrollView、F

从 Android 本地图库选择多个图片

android开发过程中自定义动画加载进度条实现过程 开发过程中需要自定义开发一个加载进度条显示,这里记录下来方便以后查找。首先:定义一个anim文件夹下的animation.xml配置文件:?xmlversion=1.0encoding=utf

标签: android design库

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

上一篇:iTOP4412开发板去掉底板上的重力加速(开发板io口在哪)

下一篇:Github上优秀的Android开源项目常用控件(github上有什么)

  • 出口退税附加税分录怎么写
  • 公司收据收款人怎么写
  • 购货方收到红字发票
  • 公对公转账需要交税吗?
  • 承包费收入如何入账
  • 多缴纳个人所得税怎么办
  • 装饰费是否计算缴纳土地增值税
  • 房租租金收入都缴纳什么税金
  • 怎么处理未抵扣增值税形成的留抵税额?
  • 进项税已入账未结转
  • 企业收到投资者以外币投入的资本应当采用什么折算
  • 土地使用权如何办理
  • 金蝶标准版结转损益发生错误
  • 海关进口增值税专用缴款书是发票吗
  • 私募基金管理人a向投资者推介私募产品,不合规
  • 个人所得税期末为负数审计调整
  • 营改增对建筑行业税负的影响
  • 发生销售折扣如何做账
  • 收据做账税局认嘛
  • 普通发票每个月有限制吗
  • 如何理解税收筹划的概念
  • 公司基本户没开影响报税吗
  • 收到投资者投入设备一台,价值100000元
  • 营改增后征收增值税的税目
  • 资本溢价最后转入哪里
  • 汇总会计报表和合并会计报表均是
  • 计算消费税要价税分离吗
  • 电子税务局财报怎么报
  • 预缴税金跨区域涉税在哪查询
  • win10怎么用wifi上网
  • internet笔记
  • windows11如何进入启动设置
  • 交增值税还交营业税吗
  • 一般纳税人购进农产品如何抵扣进项税额
  • 在网上怎
  • PHP:mcrypt_ecb()的用法_Mcrypt函数
  • 员工安置费标准出台
  • 长期应收款在哪一章
  • 浠字的意思和含义是什么
  • ssh -o命令
  • php判断ua
  • mysql分区实现
  • 申报增值税税额正确,销售额少0.94
  • 企业所得税报表模板
  • 城市维护建设税,教育费附加,地方教育费附加
  • python2.7 协程
  • springbootredis密码加密
  • asp连接sqlserver数据库的三种方式是什么?
  • 织梦添加文章如何修改高级参数
  • 平价转让股权怎么做账
  • 期初和期末余额是什么意思
  • 建筑企业属于什么类型
  • 一年内到期的非流动资产
  • 旅客运输服务进项税抵扣文件
  • 货物已到发票未到怎么做账
  • 发票已到货未到会计分录
  • 以前年度损益调整结转到哪里
  • 防疫物资采购会计处理
  • 自产自用进项税额
  • 企业提取盈余公积的比例
  • 投资性房地产公允价值变动借贷方向
  • 简单介绍春节的风俗
  • MySQL ERROR 1045 (28000) 错误的解决办法
  • mysql密码忘了怎么办?
  • mysql57服务无法启动,找不到文件夹
  • 组建,加入或退出工会都是基于
  • Fedora Core 5.0 安装教程,菜鸟图文教程(linux text)
  • open dhcp server
  • 苹果mac操作系统名称
  • win10预览版和正式版
  • win7系统的桌面图标怎么调出来
  • 微软刷机怎么刷
  • 360安全卫士升级后的安装包在哪里
  • cocos creator3
  • field.set方法
  • jquery 引入js
  • 创建ie浏览器
  • nodejs cgi
  • 异地车如何查车主信息
  • 纳税信用b级可以贷款多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设