“Android GUI19:Gallery常用技巧收藏” 在Android开发中,Gallery是一个非常有用的控件,尤其在展示图片或水平滚动内容时。Gallery属于Android视图层次结构的一部分,它是AdapterView的子类,而AdapterView又是ViewGroup的子类,ViewGroup本身则是View的派生类。这个控件的主要功能是提供一个居中锁定、可以水平滚动的项目列表,用户可以通过滑动来浏览不同的条目。 官方对Gallery的描述是:“一种显示项目的视图,以中心锁定的水平滚动列表形式呈现。”这意味着Gallery会保持用户点击的项目始终位于控件的中央,同时允许用户水平方向上左右滑动来查看更多的内容。通常,Gallery被用来展示图片集,但理论上它也能够用于显示其他类型的数据,只要适配器能正确处理这些数据。 为了演示如何使用Gallery,我们可以按照以下步骤创建一个简单的示例: 1. 首先,在布局文件(如main.xml)中添加一个Gallery组件。在这个例子中,我们将其设置为填充父容器宽度,高度则根据内容自动调整: ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Gallery android:id="@+id/gallery" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> ``` 2. 接着,我们需要准备一些图片资源。在这个示例中,我们将15张图片放入res/drawable-mdpi目录,并为它们命名,以便适配器识别。这些图片可以自由选择,只要确保它们的格式和尺寸符合项目需求。 3. 最后,创建一个自定义的Adapter类,例如ImageAdapter,让它继承自BaseAdapter。Adapter是连接数据源和视图的关键,它负责将数据转换为可显示的视图项。ImageAdapter的代码可能包括如下内容: ```java package com.pat.gui; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; public class ImageAdapter extends BaseAdapter { private Context context; public ImageAdapter(Context c) { context = c; } // 返回数据集的大小 @Override public int getCount() { return 15; // 图片的数量 } // 获取指定位置的项 @Override public Object getItem(int position) { return position; } // 获取指定位置项的ID @Override public long getItemId(int position) { return position; } // 创建并返回新的View来显示每个项 @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // 如果视图为空,创建一个新的 imageView = new ImageView(context); imageView.setLayoutParams(new Gallery.LayoutParams(200, 200)); // 设置图片的宽度和高度 imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); // 设置图片缩放模式 } else { imageView = (ImageView) convertView; // 重用已存在的视图 } imageView.setImageResource(getResourceIdByPosition(position)); // 根据位置加载图片资源 return imageView; } // 根据位置获取资源ID private int getResourceIdByPosition(int position) { // 这里需要实现根据position获取对应的图片资源ID } } ``` 在`getView()`方法中,我们创建了一个ImageView,并设置了其参数,然后根据位置加载相应的图片资源。`getResourceIdByPosition()`方法需要根据实际的图片命名规则来实现,以正确地从资源ID中获取图片。 完成以上步骤后,你需要在Activity中实例化Gallery,并为其设置适配器,这样就能在运行时看到一个可以滚动的图片画廊了。 ```java Gallery gallery = (Gallery) findViewById(R.id.gallery); gallery.setAdapter(new ImageAdapter(this)); ``` 这个简单的例子展示了如何使用Gallery控件以及自定义Adapter来展示图片。实际上,Gallery还可以配合各种触摸事件监听器,实现更丰富的交互功能,比如图片预览、点击回调等。同时,Adapter可以根据实际需求进行扩展,支持更多类型的数据展示。在实际开发中,理解并掌握Gallery的用法对于创建动态、交互性强的界面至关重要。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/4d9e973d745940eaa46a3354363407a5_wangjingyi34.jpg!1)
- 粉丝: 1
- 资源: 3
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)