《Android开发基础教程》——6.3节GridView界面组件——表格展示

简介:

本节书摘来自异步社区《Android开发基础教程》一书中的第6章,第6.3节GridView界面组件——表格展示,作者邓文渊,更多章节内容可以访问云栖社区“异步社区”公众号查看

6.3 GridView界面组件——表格展示
Android开发基础教程
GridView界面组件是在表格中放置图片进行展示,在设置时的重点是规定每一行的字段数,图片展示时会根据列自动折行显示。

6.3.1 GridView语法示例与常用的属性
例如:我们要创建一个名称为“GridView01”的GridView组件,每行有3张图片,Gallery组件和边界的距离是20dp,图片的水平和垂直间隔是6dp,宽度填满整个屏幕,高度根据图片高度调整。

<GridView android:id="@+id/GrieView01"
    android:numColumns="3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="20dp"
    android:horizontalSpacing="6dp"
    android:verticalSpacing="6dp"/>

GridView提供许多属性来设置其特性。常用的属性如下。


c080ea33aa084b9e0986b910f7257202657c1fa9

GridView组件所使用图片的数据源,是以BaseAdapter对象的类型存在。

6.3.3 继承BaseAdapter
使用GridView组件和Gallery相似,都必须创建一个继承BaseAdapter的对象来放置要呈现的图片数据,在使用时利用BaseAdapter的getView()方法定义GridView显示的图片。

例如:定义GridView组件要显示的图片是一个ImageView组件,ImageView宽、高为80*60,图像居中,图像来源为imageIds数组。

Public View getView(int position,View convertView,View Group
parent)
{
    ImageView iv=new ImageView(mContext);
    iv.setImageResource(imageIds[position]);
    iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
    iv.setLayoutParams(newGridView.LayoutParams(80,60));
    return iv;
}

6.3.4 示例:GridView显示图片行
使用GridView组件表显示所有图片,并将选择的图片显示在下方的ImageView中,如图6-7所示。


9d94160abfdc7dbb229225c20f2f0d9926da0f22

1.打开项目并完成布局配置
打开项目,在中创建一个每行可显示3列的GridView和一个ImageView。

<GridView/res/layout/main.xml>
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayout <a>xmlns:android="http://schemas.android.com/apk/res/android"</a>

    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal">
<GridView android:id="@+id/GrieView01"
    android:numColumns="3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:padding="20dp"
    android:horizontalSpacing="6dp"
    android:verticalSpacing="6dp"/>
<ImageView android:id="@+id/imgShow"
    android:layout_width="fill_parent"
    android:layout_height="200dp"/>
</LinearLayout>

2.加入图片
在项目目录下的文件夹,加入~共6张图片。

3.加入执行的程序代码
打开。程序中自建MyAdapter类继承BaseAdapter类,作为GridView的Adapter,并加入onItemClick()事件,当选择GridView中的图片后会在下方的ImageView显示完整图片。

<GridView/src/GridView.com/GridViewActivity.java>
…略
14public class GridViewActivity extends Activity{
15privatestatic finalint[] imageIds={
16R.drawable.img01,R.drawable.img02,R.drawable.img03,
17R.drawable.img04,R.drawable.img05,R.drawable.img06
18};
19private ImageView imgShow;
20
21@Override
22public void onCreate(BundlesavedInstanceState)
23{
24super.onCreate(savedInstanceState);
25setContentView(R.layout.main);
26
27//获取资源文件中的界面组件
28imgShow=(ImageView)findViewById(R.id.imgShow);
29GridView gridView=(GridView)findViewById(R.id.GrieView01);
30
31//创建自定义的Adapter
32MyAdapteradapter=new MyAdapter(this);
33
34//设置GridView的数据源
35gridView.setAdapter(adapter);
36
37//创建GridView的ItemClick事件
38gridView.setOnItemClickListener(new OnItemClickListener()
39{
40@Override
41public void onItemClick(AdapterView<?>
                            parent,View v,int position,lon gid)
42{
43imgShow.setImageResource(imageIds[position]);
44}
45});
46}
第32行,使用自定义的MyAdapter创建对象adapter,这个adapter中的getView()方法就是定义GridView的布局配置。
第35行,设置GridView的数据源是adapter。
第38~45行,创建GridView组件ItemClick事件的触发事件,当选择GridView中的图片即会在ImageView上显示选择的图片。
续:<GridView/src/GridView.com/GridViewActivity.java>
48//自定义的myAdapter类,继承BaseAdapter类
49class MyAdapter extends BaseAdapter
50{
51private Context mContext;
52public MyAdapter(Context c)
53{
54mContext=c;
55}
56@Override
57public int getCount()
58{
59return imageIds.length;//图片共有多少张
60}
61@Override
62public Object getItem(int arg0)
63{
64return null;
65}
66@Override
67public long getItemId(int arg0)
68{
69return 0;
70}
71
72//定义GridView显示的图片
73@Override
74public View getView(int position,View convertView,ViewGroup parent)
75{
76ImageView iv=newImageView(mContext);
77iv.setImageResource(imageIds[position]);
78iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
79iv.setLayoutParams(newGridView.LayoutParams(80,60));
80return iv;
81}
82}
83}

第49~82行,继承BaseAdapter创建MyAdapter类,在BaseAdapter类下必须实现getCount()、getView()、getItem()、getItemId()等方法,最重要的部分是将GridView组件的布局配置创建在getView()方法中。
第57~60行,getCount()中以imageIds.length获取图片共有多少张。
第61~70行,getItem()与getItemId()暂时仍需保留实现结构,所以保留默认内容。
第74~81行,其实GridView组件的内容是一张张的ImageView组合起来,这里我们要利用getView()的内容来创建GridView的布局配置。
第76行,创建一个ImageView类型的对象iv,必须加入mContext参数,表示对象要创建在主程序类GridViewActivity中。
第77~79行,设置ImageView图像来源为imageIds数组,并设置图片宽、高为80*60,居中显示。
第80行,完成设置传回自定义的imageView组件。
保存项目后,按Ctrl+F11组合键执行项目,在上方显示的即是GridView组件,选择其中的图片会在下方的ImageView组件显示指定的图片,如图6-8所示。


0ef786cc023c2dd21a6fc1a0a0ef2b4a4f07a21e
相关文章
|
5天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
28天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
14 0
|
2天前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
14天前
|
存储 数据库 Android开发
构建高效安卓应用:采用Jetpack架构组件优化用户体验
【4月更文挑战第12天】 在当今快速发展的数字时代,Android 应用程序的流畅性与响应速度对用户满意度至关重要。为提高应用性能并降低维护成本,开发者需寻求先进的技术解决方案。本文将探讨如何利用 Android Jetpack 中的架构组件 — 如 LiveData、ViewModel 和 Room — 来构建高质量的安卓应用。通过具体实施案例分析,我们将展示这些组件如何协同工作以实现数据持久化、界面与逻辑分离,以及确保数据的即时更新,从而优化用户体验并提升应用的可维护性和可测试性。
|
19天前
|
XML 开发工具 Android开发
构建高效的安卓应用:使用Jetpack Compose优化UI开发
【4月更文挑战第7天】 随着Android开发不断进化,开发者面临着提高应用性能与简化UI构建流程的双重挑战。本文将探讨如何使用Jetpack Compose这一现代UI工具包来优化安卓应用的开发流程,并提升用户界面的流畅性与一致性。通过介绍Jetpack Compose的核心概念、与传统方法的区别以及实际集成步骤,我们旨在提供一种高效且可靠的解决方案,以帮助开发者构建响应迅速且用户体验优良的安卓应用。
|
21天前
|
监控 算法 Android开发
安卓应用开发:打造高效启动流程
【4月更文挑战第5天】 在移动应用的世界中,用户的第一印象至关重要。特别是对于安卓应用而言,启动时间是用户体验的关键指标之一。本文将深入探讨如何优化安卓应用的启动流程,从而减少启动时间,提升用户满意度。我们将从分析应用启动流程的各个阶段入手,提出一系列实用的技术策略,包括代码层面的优化、资源加载的管理以及异步初始化等,帮助开发者构建快速响应的安卓应用。
|
21天前
|
Java Android开发
Android开发之使用OpenGL实现翻书动画
本文讲述了如何使用OpenGL实现更平滑、逼真的电子书翻页动画,以解决传统贝塞尔曲线方法存在的卡顿和阴影问题。作者分享了一个改造后的外国代码示例,提供了从前往后和从后往前的翻页效果动图。文章附带了`GlTurnActivity`的Java代码片段,展示如何加载和显示书籍图片。完整工程代码可在作者的GitHub找到:https://github.com/aqi00/note/tree/master/ExmOpenGL。
23 1
Android开发之使用OpenGL实现翻书动画
|
21天前
|
Android开发 开发者
Android开发之OpenGL的画笔工具GL10
这篇文章简述了OpenGL通过GL10进行三维图形绘制,强调颜色取值范围为0.0到1.0,背景和画笔颜色设置方法;介绍了三维坐标系及与之相关的旋转、平移和缩放操作;最后探讨了坐标矩阵变换,包括设置绘图区域、调整镜头参数和改变观测方位。示例代码展示了如何使用这些方法创建简单的三维立方体。
18 1
Android开发之OpenGL的画笔工具GL10
|
28天前
|
Android开发
Android开发小技巧:怎样在 textview 前面加上一个小图标。
Android开发小技巧:怎样在 textview 前面加上一个小图标。
12 0
|
28天前
|
Android开发
Android 开发 pickerview 自定义选择器
Android 开发 pickerview 自定义选择器
12 0