zoukankan      html  css  js  c++  java
  • 高级UI晋升之布局ViewGroup(四)

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680
    本篇文章将从LinearLayout、RelativeLayout、FrameLayout、AbsoluteLayout、GridLayout来介绍常用View布局:

    一、UI的描述

    对于Android应用程序中,所有用户界面元素都是由ViewViewGroup对象构建的。View是绘制在屏幕上能与用户进行交互的一个对象。而对于ViewGroup来说,则是一个用于存放其他ViewViewGroup对象的布局容器!

     
    11158618-cac0e2dc292c875b.png
     

    Android为我们提供了ViewViewGroup的两个子类的集合,提供常用的一些输入控件(比如按钮,图片和文本域等)和各种各样的布局模式(比如线程布局,相对布局,绝对布局,帧布局,表格布局等)。

    二、用户界面布局

    在你APP软件上的,用户界面上显示的每一个组件都是使用层次结构ViewViewGroup对象来构成的,比如,每个ViewGroup都是不可见容器,每个ViewGroup视图组用于组织子视图View的容器,而它的子视图View可能是输入一些控件或者在某块区域的小部件UI。如果你有了层次结构树,你可以根据自己的需要,设计出一些布局,但要尽量简单,因为越简单的层次结构最适合性能。

    要声明布局,可以在代码中实例化对象并构建,最简单的方法也可以使用xml文件。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="vertical" >
        <TextView android:id="@+id/text"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="TextView" />
        <Button android:id="@+id/button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button" />
    </LinearLayout>
    

    三、 在Android中提供了几个常用View布局:

    1. LinearLayout线性布局
    2. RelativeLayout相对布局
    3. FrameLayout帧布局
    4. AbsoluteLayout绝对布局
    5. TableLayout表格布局
    6. GridLayout网格布局

    四、 描述一下几个重要的

    线性布局:
    指子控件以水平或垂直方式排列。

    相对布局:
    指子控件以控件之间的相对位置或子控件相对于父容器的位置排列。

    帧布局:
    指所有子控件均放在左上角且后面元素直接覆盖在前面元素之上。

    绝对布局:
    指子控件通过绝对定位x,y位置来决定其位置摆放。

    表格布局:
    指以行列的形式放置子控件,每一行是一个TableRow对象或者View对象。

     
    11158618-806450345dd6ffaf
    image

    4.1 LinearLayout线性布局

    常用属性:

    1. id:为该组件添加一个资源id
    2. orientation:布局中的排列方式,有两种方式:
      horizontal水平
      vertical竖直
    3. layout_布局的宽度,用wrap_content表示组件的实际宽度,match_parent表示填充父容器
    4. layout_height:布局的长度,用wrap_content表示组件的实际长度,match_parent表示填充父容器
    5. gravity:控制组件所包含的子元素的对齐方式
    6. layout_gravity:控制该组件在父容器里的对齐方式
    7. background:为该组件添加一个背景图片

    LinearLayout是一个视图组,可以在一个方向垂直或者水平分布所有子项,用android:orientation属性。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="输入账号" />
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="输入密码" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登录" />
    </LinearLayout>
    
    

    4.2RelativeLayout相对布局

    RelativeLayout是一个相对布局的视图组,用来显示相对位置的子视图类,在默认情况下,所有子视图对会分布在左上角。

    1. layout_alignParentTop:true,视图的上边界与父级的上边界对齐
    2. layout_centerVertical:true,将子类放置在父类中心
    3. layout_below:将该视图放在资源ID下方
    4. layout_toRightOf:将该视图放在资源ID右边
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <EditText
            android:id="@+id/name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="你的名字" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/name"
            android:layout_alignParentRight="true"
            android:text="正确" />
    </RelativeLayout>
    
    

    4.3 GridView网格布局

    GridView其实是一个网格一样的视图组件,是一个ViewGroup的二维视图。用适配器可以将布局进行填充。

     
    11158618-cc5543d29b1702a6.png
     

    4.4 ListView列表组件

    ListView是一个用于显示列表的可以滚动的视图组,列表项也可以用适配器进行添加内容的。

     
    11158618-0d7d799ae329ae8d.png
     

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680
    原文链接:https://www.jianshu.com/p/58d63e31ea18

  • 相关阅读:
    20200226 Java IO流——廖雪峰
    20200225 Java 多线程(2)-廖雪峰
    20200225 Java 多线程(1)-廖雪峰
    20200224 尚硅谷ElasticSearch【归档】
    20200224 一 概述
    20200222 尚硅谷Dubbo【归档】
    20200222 四、dubbo原理
    Improved robustness of reinforcement learning policies upon conversion to spiking neuronal network platforms applied to Atari Breakout game
    Reinforcement learning in populations of spiking neurons
    Solving the Distal Reward Problem through Linkage of STDP and Dopamine Signaling
  • 原文地址:https://www.cnblogs.com/Android-Alvin/p/11953041.html
Copyright © 2011-2022 走看看