欢迎大家下载我个人开发的app安琪花园

其基本思路是:

1. 通过自定义属性,作用于PercentRelativeLayout的子控件上面

2. 重写PercentRelativeLayout 静态内部类LayoutParams继承自RelativeLayout.LayoutParams

3. 在重写的LayoutParams里面解析出新增加的属性

4. 重写PercentRelatvieLayoutParams里面的generateLayoutParams(AttributeSet attrs)方法,并返回我们自己定义 的LayoutParams实例

5. 重写percentRelativeLayout的onmeasure方法,计算出控件的真正宽高。

接下来看一下具体的代码

第一步:

第二步, 第三步: 位于自定义控件PercentRelativeLayout下面

public static class LayoutParams extends RelativeLayout.LayoutParams {

public float width;

public float height;

public LayoutParams(Context c, AttributeSet attrs) {

super(c, attrs);

TypedArray array = c.obtainStyledAttributes(attrs, R.styleable.Percent);

width = array.getFloat(R.styleable.Percent_width_percent, 0);

height = array.getFloat(R.styleable.Percent_height_percent, 0);

array.recycle();

}

}

第四步:返回了自己写的LayoutParams实例

@Override

public RelativeLayout.LayoutParams generateLayoutParams(AttributeSet attrs) {

return new LayoutParams(getContext(), attrs);

}

第五步: 重写onMeasure方法, 计算出真正的宽高

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int width = MeasureSpec.getSize(widthMeasureSpec);

int height = MeasureSpec.getSize(heightMeasureSpec);

int count = getChildCount();

for(int i = 0; i < count; i++){

View view = getChildAt(i);

ViewGroup.LayoutParams params = view.getLayoutParams();

if(checkLayoutParams(params)){

LayoutParams params1 = (LayoutParams) params;

if(params1.width > 0){

params.width = (int) (width * params1.width);

}

if(params1.height > 0){

params.height = (int) (height * params1.height);

}

view.setLayoutParams(params);

}

}

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}

android软件百分比怎么实现,android 百分比布局相关推荐

  1. Android软件开发之盘点界面五大布局(十六)

    Android软件开发之盘点界面五大布局 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archive ...

  2. 做简单的android 软件推荐,Android_适用于Android开发的简单聊天软件,适用于android 开发。是一个简 - phpStudy...

    适用于Android开发的简单聊天软件 适用于android 开发.是一个简单的聊天软件,包括知识点,各个控件的运用(ExpandableListView,ViewPager,Spinner,Line ...

  3. 删除android软件,adb shell删除Android系统下的软件

    一.删除Android系统下的软件,使用adb shell进入系统,然后使用命令重新挂载"/system"目录为读写权限,具体操作及命令如下: 1.打开dos窗口:win+R 输入 ...

  4. for android 软件,安卓特工 for Android

    安卓特工是一款手机装机必备软件,丰富多采的功能和人性化原素使个性化得到延伸,软件操作简单,几乎不消耗内存和系统资源,拥有安卓特工是一种充满乐趣的智能体验,安装安卓特工,从此高端商务功能不再是天价手机的 ...

  5. android软件无法联网,关于android软件wifi联网无法使用的问题

    Android模拟器默认的地址是10.0.2.3,默认的DNS也是10.0.2.3,对于在家里上网学习Android的人来讲,一般电脑的IP都是192.168.1.100之类的,不在同一个网段.所以就 ...

  6. android软件多版本共存,Android Studio 多版本共存

    Android Studio 多版本共存 背景 准备 无安装版 背景 假如你现在需要运行一个gradle:2.x的项目,而你目前的AS的版本是3.x,由于2.x项目升级到3.x改动比较大,但你又不想对 ...

  7. 强制安装android软件,求肿么在Android上强制安装某一个软件。我想安装一个软件,但是安装不了,显示应用程序未安装。怎...

    我教你下载QQ管家,删除那个软件,就行了.我再教你一个网上的知识 很简单. @echo off echo 正在清理系统垃圾文件,请稍等...... del /f /s /q %systemdrive% ...

  8. Android游戏开发Android软件开发【教程三十篇】

    Android软件开发之发送短信与系统短信库解析(三十)  New Android软件开发之获取通讯录联系人信息(二十九)  New Android软件开发之PreferenceActivity中的组 ...

  9. 第三方Android 软件商店:现状和思考

    这几天聊得最多的就是移动互联网圈内做Android第三方软件商店的网站,下面的网站不分排名顺序: hiapk市场(安卓网) http://www.hiapk.com/ gfan市场(机锋网)  htt ...

  10. android软件百分比怎么实现,Android自实现百分比布局

    在开发中,组件布局是大家每日开发必须要面对的工作,对于Android来说提供五种常用布局,分别是:LinearLayout(线性布局) TableLayout(表格布局) RelativeLayout ...

最新文章

  1. web3.js(二)根据私钥推出地址查询以太数量
  2. MaxCompute 2.0—从ODPS到MaxCompute
  3. 最前线|阿里大文娱板块Q3营收同比增长20%,优酷及UC业务带动显著
  4. 缓存之EHCache
  5. oracle12cr2发布时间,Oracle 12cR2 发布在即
  6. oracle数据库启动多个监听,一台Oracle数据库服务器上两个监听同时使用
  7. JVM各个组成部分和其基本功能
  8. 在 Kali Linux 中更改 GRUB2 背景的 5 种方式
  9. [USACO13JAN] Seating
  10. 1000行代码入门python-Python基础知识和工作环境
  11. 学生信息表 -通过选择年级和班级得到详细的学生信息名单
  12. java实现带logo的二维码
  13. PDF文件如何修改密码
  14. Google Earth Engine APPS(GEE)——使用 AREA2 和 CODED 估算森林砍伐和退化面积(第 1 部分:运行 CODED)
  15. Unity5入门及进阶项目实战 星际迷航-肖师军-专题视频课程
  16. 【算法导论】 内部排序算法总结
  17. 中国第一批程序员的“青春饭”已经恰完了,35+的程序员该何去何从?
  18. Appium:配置华为手机鸿蒙HarmonyOS系统参数
  19. agv ti 毫米波雷达_一种基于毫米波雷达的AGV小车的制作方法
  20. PostgreSQL 源码解读(32)- 查询语句#17(查询优化-表达式预处理#2)

热门文章

  1. 机器人与目标匹配问题及解决 虚拟动力学 纳什平衡 Q-Learning
  2. 移动设备input输入框点击后自动选中内容_带你用 Python 实现自动化群控(入门篇)...
  3. ajax走到error_jQuery中ajax 跳入error的原因总结
  4. 内存条上面参数详解_价格极低的国产颗粒内存条:光威弈系列Pro评测,超频表现超稳定...
  5. java 反射创建对象并赋值_[原创] Java JDBC连接数据库,反射创建实体类对象并赋值数据库行记录(支持存储过程)...
  6. python计算累计收益率的函数,在Python中计算累积密度函数的导数
  7. c++语言表白超炫图形_R语言统计与绘图:组合图形布局
  8. opencv android模版匹配,Opencv for android 模板匹配
  9. mysql故障排查思路_Mysql高负载排查思路
  10. Python案例:四种方法判断回文字符串