码迷,mamicode.com
首页 > 移动开发 > 详细

android 百分比控件的使用

时间:2015-07-06 10:18:43      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:百分比控件   android   

概述

  • 谷歌官方推出这个百分比库对android的屏幕适配肯定有很大的帮助,当然具体好不好用还得根据不同的使用场景来分析。
  • 这个支持包里的内容有:百分比相对布局PercentRelativeLayout,百分比帧布局PercentFrameLayout,百分比线性布局PercentLinearLayout。

先跑demo

代码分析和使用

库的实现

  • 自定义属性,支持的属性包括:百分比宽高和百分比margin
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="PercentLayout_Layout">
        <attr name="layout_widthPercent" format="string" />
        <attr name="layout_heightPercent" format="string" />
        <attr name="layout_marginPercent" format="string" />
        <attr name="layout_marginLeftPercent" format="string" />
        <attr name="layout_marginTopPercent" format="string" />
        <attr name="layout_marginRightPercent" format="string" />
        <attr name="layout_marginBottomPercent" format="string" />
        <attr name="layout_marginStartPercent" format="string" />
        <attr name="layout_marginEndPercent" format="string" />
    </declare-styleable>

</resources>
  • 继承现有控件并应用自定义属性。android view的布局和绘制要大致经历onMeasure onLayout onDraw几步,那百分比属性的应用肯定是在onMeasure过程中了。以PercentRelativeLayout为例简单过下代码。
1.类PercentLayoutInfo用来存储自定义的百分比属性,可理解为百分比属性model。
2.类LayoutParams,继承原有的layoutparam并持有百分比属性model类。在构造时完成对model的赋值。
    public static class LayoutParams extends RelativeLayout.LayoutParams
            implements PercentLayoutHelper.PercentLayoutParams {
        private PercentLayoutHelper.PercentLayoutInfo mPercentLayoutInfo;

        public LayoutParams(Context c, AttributeSet attrs) {
            super(c, attrs);
            mPercentLayoutInfo = PercentLayoutHelper.getPercentLayoutInfo(c, attrs);
        }
3.在onMeasure中完成对百分比属性model的应用,helper的代码就不展开看了。
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        mHelper.adjustChildren(widthMeasureSpec, heightMeasureSpec);
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        if (mHelper.handleMeasuredStateTooSmall()) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    }

使用库

  • 首先建立和库工程的依赖关系
  • 在layout文件中使用
<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:text="percent relative layout1"
        android:id="@+id/top_left"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_alignParentTop="true"
        app:layout_heightPercent="20%"
        app:layout_widthPercent="70%"
        android:background="#ff44aacc" />

    <View
        android:id="@+id/top_right"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/top_left"
        app:layout_heightPercent="20%"
        app:layout_widthPercent="30%"
        android:background="#ffe40000" />

    <View
        android:id="@+id/bottom"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_below="@+id/top_left"
        app:layout_heightPercent="80%"
        android:background="#ff00ff22" />

</android.support.percent.PercentRelativeLayout>

效果图

技术分享
技术分享
技术分享

更多参考

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

android 百分比控件的使用

标签:百分比控件   android   

原文地址:http://blog.csdn.net/cheyiliu/article/details/46770375

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!