如何实现Gallery实现画廊的功能

在Android中,画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动。Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最后一个图片为止。

  下面我们就通过一个实例来演示如何实现Gallery画廊控件功能。

1.xml布局

  在xml布局文件中,我们使用LinearLayout对整个界面进行垂直布局。在界面上端设置一个ImageView控件,用来显示当前选中的Gallery列表图片。在界面下端设置一个Gallery控件,用来显示Gallery列表图片。整个布局文件很简单,具体源码如下:

 1 <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:orientation="vertical"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent" >
 6
 7     <ImageView
 8         android:id="@+id/imageView"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"    >
11     </ImageView>
12
13     <Gallery
14         android:id="@+id/gallery"
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:spacing="2dp"
18         android:layout_marginTop="5dp"    >
19     </Gallery>
20
21 </LinearLayout>

  其中,在Gallery属性标签中,android:spacing="2dp"属性用于指定Gallery列表图片之间的间隔为2dp。

  程序运行后的效果如图1所示。

图1 主界面

2.ImageAdapter适配器

  要实现Gallery画廊控件功能,需要一个容器来存放Gallery显示的图片。我们可以使用一个继承自BaseAdapter类的派生类ImageAdapter来装这些图片。

  在ImageAdapter类中我们需要实现Adapter类中的如下四个抽象方法:

  (1)public int getCount();

  (2)public Object getItem(int position);

  (3)public long getItemId(int position);

  (4)public View getView(int position, View convertView, ViewGroup parent);

  其中,getCount()方法用于获取ImageAdapter适配器中图片个数;getItem()方法用于获取图片在ImageAdapter适配器中的位置;getItemId()方法用于获取图片在ImageAdapter适配器中位置;getView()用于获取ImageAdapter适配器中指定位置的视图对象。上述四个抽象方法的具体实现方法如下:

 1   /*
 2      * Function   :    ImageAdapter类,继承自BaseAdapter
 3      * Author     :    博客园-依旧淡然
 4      */
 5     public class ImageAdapter extends BaseAdapter {
 6
 7         Context mContext;        //上下文对象
 8
 9         //构造方法
10         public ImageAdapter(Context context) {
11             this.mContext = context;
12         }
13
14         //获取图片的个数
15         public int getCount() {
16             return mImageResourceIds.length;
17         }
18
19         //获取图片在库中的位置
20         public Object getItem(int position) {
21             return mImageResourceIds[position];
22         }
23
24         //获取图片在库中的位置
25         public long getItemId(int position) {
26             return position;
27         }
28
29         //获取适配器中指定位置的视图对象
30         public View getView(int position, View convertView, ViewGroup parent) {
31             ImageView imageView = new ImageView(mContext);
32             imageView.setImageResource(mImageResourceIds[position]);
33             imageView.setLayoutParams(new Gallery.LayoutParams(120, 120));
34             imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
35             return imageView;
36         }
37
38     }

  其中,imageView.setImageResource(mImageResourceIds[position])用于将ImageAdapter中的指定位置图片资源加载到imageView中。imageView.setLayoutParams(new Gallery.LayoutParams(120, 120))用于设置Gallery中图片的显示大小。imageView.setScaleType(ImageView.ScaleType.FIT_CENTER)用于设置imageView中图片的缩放显示格式。

3.加载适配器

  实现了ImageAdapter类之后,我们可以通过setAdapter()方法把资源文件添加到Gallery中进行显示即可。

4.Gallery事件监听器

  除此之外,为了在如图1所示的界面上端的ImageView控件中同步显示Gallery控件中的当前图片。还需要对Gallery控件进行事件监听,以便获知用户选中了Gallery控件中的哪一张图片。具体的实现方法如下:

1   mGallery.setOnItemClickListener(new OnItemClickListener() {
2       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
3             mImageView.setBackgroundResource(mImageResourceIds[arg2]);
4        }
5    });
时间: 2024-10-30 03:45:55

如何实现Gallery实现画廊的功能的相关文章

Android 高级UI设计笔记11:Gallery(画廊控件)之Gallery基本使用

1. 这里要向大家介绍Android控件Gallery(画廊控件) Gallery控件主要用于横向显示图像列表,不过按常规做法.Gallery组件只能有限地显示指定的图像.也就是说,如果为Gallery组件指定了10张图像,那么当Gallery组件显示到第10张时,就不会再继续显示了. 2. Gallery基本用法: 步骤如下: (1)首先我们新建一个Android工程,工程目录如下: (2)activity_main.xml(主布局文件),如下: 在activity_main.xml添加Ima

Android_Gallery(画廊)

转:http://blog.csdn.net/tianjf0514/article/details/7521398 Gallery是画廊的意思,可以实现图片的浏览功能. 主要内容 Gallery控件的使用 使用Gallery + ImageSwitcher完成图片浏览功能 一.Gallery控件的使用 要把图片显示到Gallery里面,要使用Gallery的setAdapter()方法,所以我们先写好一个adapter类 package com.tianjf; import android.co

Android 使用HorizontalScrollView 实现Gallery效果

Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息:Gallery还可以和ImageSwitcher组件结合使用来实现一个通过缩略图来浏览图片的效果: 但Gallery被谷歌废弃了,Google推荐使用ViewPager和HorizontalScrollView来实现Gallery的效果: 看一个例子:用Gallery来实现: 代码: ScrollView1.java package com.xiaozhang.dialog; impo

[Mac]macOS Mojave&#160;:发现 Mac 的新功能。

1.深色模式 换种颜色看 Mac “深色模式”为桌面和内建应用带来更生动的外观,可让您轻松专注于最重要的内容. 若要在浅色和深色外观之间切换,请打开“系统偏好设置”并点按“通用”. 2.叠放 整理桌面 使用“叠放”自动分类桌面上的文件.在“访达”菜单栏中,选取“显示”>“使用叠放”.若要查看叠放中的内容,请点按它. 选取“使用叠放”时,桌面上的所有文件会集中在屏幕右侧的叠放中. 为叠放重新分组 要查找最近使用的文件或特定标签?若要按日期.标签或种类重新整理叠放,请选取“显示”>“叠放分组方式”

Android 中常见控件的介绍和使用

1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.lang.Object   ? android.view.View   ? android.widget.TextView 直接子类: Button, CheckedTextView, Chronometer, DigitalClock, EditText 间接子类: AutoCompleteTextV

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签

android-UI组件(四):AdapterView及其子类

http://blog.csdn.net/litianpenghaha/article/details/23270881 AdapterView组件是一组重要的组件,AdapterView本身是一个抽象基类,它派生的子类在用法上十分相似,知识显示界面有些不同, 下面是AdapterView及其子类的继承关系类图: 从AdapterView派生出的三个子类:AdsListView.AdsSpinner.AdapterViewAnimator,这3个子类依然是抽象的,实际运用时需要它们的子类. 1.

android 基础知识(一)

一.布局文件实现步骤: 1.在res/layout目录下创建一个demo_layout.xml布局文件, 2.使用RelativeLayout嵌套一个LinearLayout来进行布局,往里添加一个TextView和两个Button,并设置属性. 3.创建一个FirstLayoutActivity类,在onCreateView()方法中,使用findViewById()实例化组件. 4.Activity跳转: 1.1创建一个Activity,并且注册 1.2通过intent指定从哪个Activi

[转]android学习----基础UI编程(六)

相簿浏览 Gallery 文件搜索引擎FileSearch 17. Gallery 与 衍生BaseAdapter 容器 Gallery控件,即Android的图片库控件. 需要定义一个BaseAdaper的子类(eg.ImageAdapter)来操作控制图片资源,然后在主类中通过Gallery.setAdapter(new ImageAdapter(this));来使用这个控制类. 示例代码 本例中 ImageView 和 Gallery 控件相互协作 . ① 新建项目 ② 定义layout