Android百分比布局支持库介绍——com.android.support:percent

在此之前,相信大家都已经对Android API所提供的布局方式非常熟悉了。也许在接触Android的时候都有过这样的想法,如果可以按照百分比的方式进行界面布局,这样适配各种屏幕就简单多了吧!!以前的一个小梦想,现在终于得以实现,谷歌正式提供百分比布局支持库(percent-support-lib)。

<ignore_js_op>



获取支持库:

使用Android studio在build.gradle添加以下信息就可以获取支持库,当然了,如果你没有下载到该支持库会提示你下载。

[AppleScript] 纯文本查看 复制代码


1

2

3

4

5

dependencies {

    compile ‘com.android.support:percent:22.2.0

}



新的布局组件:

在这个包里面有两个新的容器类

1、PercentRelativeLayout

<ignore_js_op>

2、PercentFrameLayout

<ignore_js_op>

在此看来,这两个类很显然是继承自 FrameLayout 和 RelativeLayout 两个容器类。



新的属性设置:

新的容器有了一些设置百分比的属性,下面我们来了解一下:

  • layout_widthPercent

设置控件宽度为父容器的宽的百分比

  • layout_heightPercent

设置控件高度为父容器的高的百分比

  • layout_marginPercent
  • layout_marginLeftPercent

设置控件与左边控件的距离为父容器的宽度的百分比

  • layout_marginTopPercent

设置控件与上方控件的距离为父容器的高度的百分比

  • layout_marginRightPercent

设置控件与右边控件的距离为父容器的宽度的百分比

  • layout_marginBottomPercent

设置控件与下方控件的距离为父容器的高度的百分比

  • layout_marginStartPercent

与上面的说明类似

  • layout_marginEndPercent

与上面的说明类似

从命名的方式我们可以知道,原来用某些具体单位(如dp)的设置现在都可以用百分比的方式进行设置了,例如设置控件的宽度layout_width原来我们是这样玩的android:layout_width="match_parent"现在用了百分比的属性之后呢,可以这样玩了app:layout_widthPercent="50%",这里的百分比是相对于父容器而言的。



使用介绍:

官方文档地址:https://juliengenoud.github.io/android-percent-support-lib-sample/

在布局的xml文件需要添加下面这行来声明

[XML] 纯文本查看 复制代码


1

xmlns:app="http://schemas.android.com/apk/res-auto"

官方示例代码:

[XML] 纯文本查看 复制代码


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

<android.support.percent.PercentFrameLayout

         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"/>

     <ImageView

         app:layout_widthPercent="50%"

         app:layout_heightPercent="50%"

         app:layout_marginTopPercent="25%"

         app:layout_marginLeftPercent="25%"/>

 </android.support.percent.PercentFrameLayout/>

上面是官方文档的使用示例代码,但是实际上使用的时候如果没设置控件的宽高是会报错的。

实验的布局代码:

[XML] 纯文本查看 复制代码


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

<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">

 

    <View

        android:id="@+id/top_left"

        android:layout_width="0dp"

        android:layout_height="0dp"

        android:layout_alignParentTop="true"

        android:background="#ff0000"

        app:layout_heightPercent="30%"

        app:layout_widthPercent="70%" />

 

    <View

        android:id="@+id/top_right"

        android:layout_width="0dp"

        android:layout_height="0dp"

        android:layout_alignParentTop="true"

        android:layout_toRightOf="@+id/top_left"

        android:background="#00ff00"

        app:layout_heightPercent="30%"

        app:layout_widthPercent="30%" />

 

 

    <View

        android:id="@+id/centre"

        android:layout_width="match_parent"

        android:layout_height="0dp"

        android:layout_below="@+id/top_left"

        android:background="#0000ff"

        app:layout_marginLeftPercent="10%"

        app:layout_marginRightPercent="20%"

        app:layout_marginTopPercent="10%"

        app:layout_marginBottomPercent="10%"

        app:layout_heightPercent="40%" />

 

    <View

        android:layout_width="match_parent"

        android:layout_height="0dp"

        android:id="@+id/bottom"

        android:layout_below="@+id/centre"

        android:background="#00f0ff"

        android:layout_alignParentLeft="true"

        android:layout_alignParentStart="true"

        app:layout_heightPercent="10%"/>

 

 

</android.support.percent.PercentRelativeLayout>

<ignore_js_op>

布局图1

下面我对百分比布局的属性进行了一些小实验,来验证我的几个问题:



1、layout_marginTopPercent这种类型的参数具体的意义是什么?

答:中间的蓝色view设置了我们疑惑的属性

[XML] 纯文本查看 复制代码


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

<View

        android:id="@+id/centre"

        android:layout_width="match_parent"

        android:layout_height="0dp"

        android:layout_below="@+id/top_left"

        android:background="#0000ff"

        app:layout_marginLeftPercent="10%"

        app:layout_marginRightPercent="20%"

        app:layout_marginTopPercent="10%"

        app:layout_marginBottomPercent="10%"

        app:layout_heightPercent="40%" />

然后我们在看看实现的效果,请看布局图1。

再将layout_marginLeftPercent这类型的属性跟以前我们熟悉的layout_marginLeft类型属性对比可知,layout_marginLeftPercent属性是控件距离左边控件的距离为父类容器的宽度的百分比,其余属性类似。(其实这里不能证明是相对于父容器还是相对于屏幕而言,我们在下面进行证明)



2、控件设置的百分比是相对于屏幕还是相对于父容器而言呢?

答:从上面的实验代码我们基本了解了各种属性的使用,但是不禁疑惑百分比这个是相对父容器而言的吗?也许自然我们就会想到应该是相对于父容器,但是不在实践中证明始终都是不放心的。实践是证明真理的唯一标准!!

好的,其实要证明也很容易。下面我们对容器类的宽度和高度分别进行修改,然后看看显示的情况。

1)修改高度为定值300dp

[XML] 纯文本查看 复制代码


1

2

3

4

5

6

7

8

9

<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="300dp">

然后我们看看显示的情况

<ignore_js_op>

2)修改宽度为200dp

[XML] 纯文本查看 复制代码


1

2

3

4

5

6

7

8

9

<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="200dp"

android:layout_height="match_parent">

再看看效果

<ignore_js_op>

时间: 2024-11-08 21:11:17

Android百分比布局支持库介绍——com.android.support:percent的相关文章

Android 测试支持库介绍

测试支持库 Android的测试支持库为测试Android应用提供了大量框架.该库提供了一组API快速构建和运行测试代码,包括JUnit4和功能用户界面(UI)测试.可以从Android Studio IDE中或命令行这执行. Android的测试支持库可通过Android SDK管理器获取. 测试支持库特性 AndroidJUnitRunner:兼容JUnit 4测试运行器. Espresso:UI测试框架;适合在单个应用的功能UI测试. UI Automator:UI测试框架;适用于跨应用的

Android 百分比布局库扩展 为了适配而改写

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46767825: 本文出自:[张鸿洋的博客] 一 概述 上周一我们发布了Android 百分比布局库(percent-support-lib) 解析与扩展中对percent-support这个库进行了解析和添加了PercentLinearLayout的支持. 那么为什么本篇博客的存在的意义是什么呢? 首先我们回顾下百分比布局库的用法,提供了PercentRelativeLayo

Android百分比布局成功导入及简单使用

最近学习第一行代码第二版这本书,里面有介绍百分比布局的使用,经过一番摸索,终于是成功导入了百分比布局 就是这样,appcompat是25.3.1,那么百分比布局percent也是25.3.1 这样便是配置成功了,之后直接使用在textview或者是button等控件使用app:layout_heightPercent和app:layout_widthPercent两个属性便是可以了 这一行是是否重要的 xmlns:app="http://schemas.android.com/apk/res-a

Android 百分比布局库(percent-support-lib) 解析与扩展

idxkhrsoyl.mag.mybaby.com.cn/wylcvzaxir.mag.mybaby.com.cn/vofjbsfzzq.mag.mybaby.com.cn/bpqccmjsjl.mag.mybaby.com.cn/fbiwzmrxky.mag.mybaby.com.cn/jgbhxguvpu.mag.mybaby.com.cn/hjwkryckpq.mag.mybaby.com.cn/ndprddekmr.mag.mybaby.com.cn/kcncwrjsqm.mag.myb

Android百分比布局

在Android中对控件布局指定尺寸时,一般有两种方式:一种设定为自适应布局,即match_parent(fill_parent)或者wrap_content,通过根据父布局大小或者自己内容来产生一个动态尺寸:另外一种通过指定一个具体数值的方式定义成固定布局,单位可以是px/dp/sp等.这在绝大数情况下是可以解决问题的. 可是有没有办法像div+css里那样根据屏幕的尺寸,对控件布局进行"百分比"设定呢?这时就需要用到LinearLayout和他的子控件属性layout_weight

google 原生态 抽屉式侧滑菜单 Android DrawerLayout 布局的使用介绍

废话不多说,直接上效果图: 其实谷歌官方已经给出了一个 关于DrawerLayout 使用的例子,只是处于 国内不能访问谷歌官网,看不到详细文档说明,所以在此 简单记录下  侧滑 抽屉式菜单的使用说明 1.由于 DrawerLayout 需要 android.support.v4 包的支持,所以,你的libs 下面不要包含 这个包. 2.首先布局文件如下 <android.support.v4.widget.DrawerLayout xmlns:android="http://schema

[原]ffmpeg编译android 硬解码支持库 libstagefright

最近花了一天时间将ffmpeg/tools/build_stagefright执行成功,主要是交叉编译所需要的各种动态库的支持没链接上,导致各种报错,基本上网络上问到的问题我都碰到了,特此记录下来. 编译环境:Ubuntu 14.04 + Android NDK + FFmpeg源码. 第一步:将ffmpeg/tools/build_stagefright移动到ffmpeg下面,修改执行权限. chmod u+x build_stagefright 第二步:打开build_stagefright

Android 屏幕适配(二)增强版百分比布局库(percent-support-lib)

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46767825: 本文出自:[张鸿洋的博客] 一 概述 上周一我们发布了Android 百分比布局库(percent-support-lib) 解析与扩展中对percent-support这个库进行了解析和添加了PercentLinearLayout的支持. 那么为什么本篇博客的存在的意义是什么呢? 首先我们回顾下百分比布局库的用法,提供了PercentRelativeLayo

android support Percent支持库开发

Android的布局支持百分比的设置进行开发,来学习如何去实现它,不过看起来会像网页的设置,比如宽度的设置属性是`layout_widthPercent`.在此之前,我们一般都会设置Linearlayout的weight权重来实现布局间的比例大小. Percent support Library提供了两个新的类: 1.PercentRelativeLayout 2.PercentFrameLayout 创建新项目 创建一个新的项目来测试,修改`build.gradle`,需要引入以下库 `app