ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用View实现相册照片列表页面

2022-02-06 20:32:57  阅读:199  来源: 互联网

标签:xml 管理器 相册 int 组件 layout android View 页面


1 View概述

1.1 View

View表示视图,负责提供绘制和事件处理的方法。View类及其子类的相关属性,既可以在xml布局文件中设置,也可以通过成员方法动态设置。
View类常用的属性及方法如表1:

xml属性

成员方法

描述

android:background

setBackgroundResource(int)

设置背景

android:clickable

setClickable(boolean)

设置是否响应单击事件

android::elevation

setElevation(float)

设置z轴深度

android:focusable

setFocusable(boolean)

设置是否可以获取焦点

android:id

setId(int)

设置组件唯一标识符ID

android:longClickable

setLongClickable(boolean)

设置是否响应长单击事件

android:minHeight

setMinimumHeight(int)

设置最小高度

android:minWidth

setMinimumWidth(int)

设置最小宽度

android:padding

setPaddingRelative(int,int,int,int)

设置4个边的内边距

android:paddingBottom

setPaddingRelative(int,int,int,int)

设置底边的内边距

android:paddingTop

setPaddingRelative(int,int,int,int)

设置顶边的内边距

android:paddingStart

setPaddingRelative(int,int,int,int)

设置左边的内边距

android:paddingEnd

setPaddingRelative(int,int,int,int)

设置右边的内边距

android:paddingLeft

setPadding(int,int,int,int)

设置左边的内边距

android:paddingRight

setPadding(int,int,int,int)

设置右边的内边距

android:visibility

setVisibility(int)

设置View的可见性

表1 View类常用的xml属性及对应的方法

1.2 ViewGroup

ViewGroup是一个抽象类,实际用ViewGroup的子类,如后面的布局管理器。
(1)ViewGroup.LayoutParams
封装了布局的位置,高和宽。

xml属性

描述

android:layout_height

android:layout_width

参数可以使用精确的数值,或

FILL_PARENT,MATCH_PARENT(表示与父容器相同)

WRAP_CONTENT(表示包裹其自身的内容)

(2)ViewGroup.MarginLayoutParams
用于控制其子组件的外边距。它支持的常用属性如表2:

xml属性

描述

android:layout_marginBottom

设置底外边距

android:layout_marginTop

设置顶外边距

android:layout_marginStart

设置左外边距(Android4.2)

android:layout_marginEnd

设置右外边距(Andriod4.2)

android:layout_marginLeft

设置左外边距

android:layout_marginRight

设置右外边距

表2 ViewGroup.MarginLayoutParams支持的常用属性
ViewGroup中除了可以包含View,还可以再次包含ViewGroup,这应用了组合设计模式(Composite design),如图3:

 

图3 View层次结构

2 控制UI界面

2.1 使用xml布局文件控制

(1)创建xml布局文件
(2)代码调用

setContentView(R.layout.activity_main);

2.2 使用代码控制

(1)创建布局管理器,如帧布局管理器等。
(2)创建具体的组件,如TextView等。
(3)将创建的组件添加到布局管理器中。

2.3 使用xml布局文件和代码控制

通常把变化小的组件放在xml布局文件中,把变化大的组件用代码控制。

2.4 使用自定义View控制

我们可以继承View来开发自己的View组件。
(1)创建View子类,重写构造方法。
(2)根据需要重写其他方法。
(3)创建并实例化自定义View类,并将其添加到布局管理器中。

3 布局管理器

(1)相对布局管理器
通过相对定位的方式来控制组件的位置。
(2)线性布局管理器
在垂直或水平方向依次摆放组件。
(3)帧布局管理器
所有的组件会摆放在左上角,逐个覆盖。
(4)表格布局管理器
使用表格的方式按行,列来摆放组件。
(5)网格布局管理器
可以实现跨行或跨列摆放组件。
布局管理器类图如图4:

 图4 布局管理器类图

3.1 相对布局管理器

<RelativeLayout>标记基本语法:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        属性列表
>
</RelativeLayout>

RelativeLayout支持的xml属性如表5:

xml属性

描述

android:gravity

设置布局管理器中各子组件的对齐方式

android:ignoreGravity

指定哪个组件不受gravity的影响

表5 RelativeLayout支持的xml属性
RelativeLayout.LayoutParams支持的xml属性如表6:

xml属性 描述
android:layout_above 指定该组件位于那个组件的上方
android:layout_below 指定该组件位于那个组件的下方
android:layout_alignBottom 指定该组件与哪个组件的下边界对齐
android:layout_alignTop 指定该组件与哪个组件的上边界对齐
android:layout_alignLeft 指定该组件与哪个组件的左边界对齐
android:layout_alignRight 指定该组件与哪个组件的右边界对齐
android:layout_alignParentBottom 指定该组件是否与布局管理器底端对齐
android:layout_alignParentTop 指定该组件是否与布局管理器顶端对齐
android:layout_alignParentLeft 指定该组件是否与布局管理器左边对齐
android:layout_alignParentRight 指定该组件是否与布局管理器右边对齐
android:layout_centerHorizontal 指定该组件是否位于布局管理器水平居中的位置
android:layout_centerInParent 指定该组件是否位于布局管理器的中央位置
android:layout_centerVertical 指定该组件是否位于布局管理器垂直居中的位置
android:layout_toLeftOf 指定该组件位于哪个组件的左侧
android:layout_toRightOf 指定该组件位于哪个组件的右侧

表6 RelativeLayout.LayoutParams

3.2 线性布局管理器

纵向排列的称为垂直线性布局管理器,横向排列的称为水平线性布局管理器。
<LinearLayout>标记的基本语法格式:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    属性列表
>
</LinearLayout>

LinearLayout支持的常用xml属性如表7:

xml属性

描述

android:orientation

设置排列方式

android:gravity

设置组件显式位置

android:background

设置背景

表7 LinearLayout支持的常用xml属性

3.3 帧布局管理器

在帧布局管理器中,每加入一个组件,都将创建一个空白的区域,称为一帧。这些帧会被放置在屏幕的左上角,即帧布局是从屏幕的左上角(0,0)开始布局。多个组件层叠排序,后面的组件覆盖前面的组件。
<FrameLayout>标记的基本语法格式:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    属性列表
>
</FrameLayout>

FrameLayout支持的常用xml属性如表8:

xml属性 描述
android:foreground 设置该帧布局容器的前景图像
android:foregroundGravity 设置前景图像的显示位置

表8 FrameLayout支持的常用xml属性

3.4 表格布局管理器

在表格布局管理器中,可添加多个<TableRow>标记,每个<TableRow>标记占用一行。
在表格布局管理器中,列可以被隐藏,也可以被设置伸展,还可以设置强制收缩。
<TableLayout>基本语法格式如下:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    属性列表
>
    <TableRow 属性列表> 需要添加的组件 </TableRow>
    ...
</TableLayout>

TableLayout继承自LinearLayout,除了支持LinearLayout的xml属性,还支持下表9的xml属性:

xml属性 描述
android:collapseColumns 设置被隐藏的列的列序号
android:shrinkColumns 设置被收缩的列的列序号
android:stretchColumns 设置被拉伸的列的列序号

表9 TableLayout支持的xml属性

3.5 网格布局管理器

网格布局管理器中,屏幕被虚拟的细线划分为行,列和单元格,每个单元格放置一个组件,却这个组件可以跨行或跨列摆放。
<GridLayout>标记的基本语法格式如下:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    属性列表
>
</GridLayout>

GridLayout支持的xml属性如表10:

xml属性 描述
android:columnCount 指定网格的最大列数
android:rowCount 指定网格的最大行数
android:orientation 指定排列方式
android:alignmentMode 指定对齐模式

表10 GridLaytout支持的xml属性
GridLayout.LayoutParams支持的xml属性如表11:

xml属性 描述
android:layout_gravity 设置组件显式位置
android:layout_column 指定该子组件位于网格的第几列
android:layout_columnSpan 指定该子组件横向跨几列
android:layout_columnWeight 指定子组件在水平方向上的权重
android:layout_row 指定该子组件位于网格的第几行
android:layout_rowSpan 指定该子组件纵向跨几行
android:layout_rowWeight 指定子组件在垂直方向上的权重

表11 GridLayout.LayoutParams支持的xml属性
网格布局管理器与表格布局管理器的区别如下:
(1)网格布局管理器可以跨行或跨列,表格布局管理器只能跨列。
(2)网格布局管理器可以实现一行占满后的组件自动换行,表格布局管理器超出的组件不会被显式。

4 使用View实现相册照片列表页面

PhotosView:
MainActivity.java:

public class MainActivity extends AppCompatActivity {
    private  ImageView[] img=new ImageView[12];
    private int[] imagePath=new int[]{
            R.mipmap.img01,R.mipmap.img02,R.mipmap.img03,R.mipmap.img04,
            R.mipmap.img05,R.mipmap.img06,R.mipmap.img07,R.mipmap.img08,
            R.mipmap.img09,R.mipmap.img10,R.mipmap.img11,R.mipmap.img12
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        GridLayout layout=(GridLayout)findViewById(R.id.layout);
        for(int i=0;i<imagePath.length;i++){
            img[i]=new ImageView(MainActivity.this);
            img[i].setImageResource(imagePath[i]);
            img[i].setPadding(2, 2,2, 2);
            // 设置图片的宽度和高度
            ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(232,136);
            // 为ImageView组件设置布局参数
            img[i].setLayoutParams(params);
            // 将ImageView组件添加到布局管理器中
            layout.addView(img[i]);
        }
    }
}

https://github.com/hanyuhang-hz/android-demos

标签:xml,管理器,相册,int,组件,layout,android,View,页面
来源: https://blog.csdn.net/u012906122/article/details/122801215

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有