Android学习之-----Gallery

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

1.XML布局

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6
 7     <ImageView
 8         android:id="@+id/imageView"
 9         android:layout_width="match_parent"
10         android:layout_height="650dp" >
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="5dp" >
18     </Gallery>
19
20 </LinearLayout>

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

2.实现适配器

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

代码如:

 1 package com.example.gallery;
 2
 3 import android.os.Bundle;
 4 import android.app.Activity;
 5 import android.content.Context;
 6 import android.view.Menu;
 7 import android.view.View;
 8 import android.view.ViewGroup;
 9 import android.widget.AdapterView;
10 import android.widget.AdapterView.OnItemClickListener;
11 import android.widget.BaseAdapter;
12 import android.widget.Gallery;
13 import android.widget.ImageView;
14
15 public class MainActivity extends Activity {
16     private ImageView mImageView;
17     private Gallery mGallery;
18     private int[] images = { R.drawable.m1, R.drawable.m2, R.drawable.m3,
19             R.drawable.m4, R.drawable.m5, };
20
21     @Override
22     protected void onCreate(Bundle savedInstanceState) {
23         super.onCreate(savedInstanceState);
24         setContentView(R.layout.activity_main);
25         mImageView = (ImageView) this.findViewById(R.id.imageView);
26         mGallery = (Gallery) this.findViewById(R.id.gallery);
27         mGallery.setAdapter(new ImagesAdapter(this));
28         mGallery.setOnItemClickListener(new OnItemClickListener() {
29             @Override
30             public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
31                     long arg3) {
32                 mImageView.setBackgroundResource(images[arg2]);
33             }
34         });
35     }
36
37     public class ImagesAdapter extends BaseAdapter {
38         private Context context;
39
40         public ImagesAdapter(Context context) {
41             this.context = context;
42         }
43
44         @Override
45         public int getCount() {
46             // TODO Auto-generated method stub
47             return images.length;
48         }
49
50         @Override
51         public Object getItem(int position) {
52             // TODO Auto-generated method stub
53             return images[position];
54         }
55
56         @Override
57         public long getItemId(int position) {
58             // TODO Auto-generated method stub
59             return position;
60         }
61
62         @Override
63         public View getView(int position, View arg1, ViewGroup arg2) {
64             ImageView imageView = new ImageView(context);
65             imageView.setImageResource(images[position]);
66             imageView.setLayoutParams(new Gallery.LayoutParams(200, 200));
67             imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
68             return imageView;
69         }
70     }
71
72     @Override
73     public boolean onCreateOptionsMenu(Menu menu) {
74         // Inflate the menu; this adds items to the action bar if it is present.
75         getMenuInflater().inflate(R.menu.main, menu);
76         return true;
77     }
78
79 }
时间: 2024-08-01 01:03:05

Android学习之-----Gallery的相关文章

android学习---Gallery画廊视图

Gallery与Spinner有共同父类:AbsPinner,说明Gallery与Spinner都是一个列表框.它们之间的区别在于Spinner显示的是一个垂直的列表选择框,而Gallery显示的是一个水平的列表选择框.Spinner的作用是供用户选择,而Gallery则允许用户通过拖动查看上一个,下一个. Gallery用法与Spinner的用法形似,只要为它提供一个内容Adapter就可以了.Adapter的getView方法返回View作为Gallery列表的列表项.如果程序需要监控Gal

Android UI学习之Gallery

在生活就大家都会在手机上浏览图片,然后会用手指从左到右滑动.其实这样的效果就是借助Gallery实现的. 接下来一一个简单的例子介绍Gallery的使用: public class GalleryActivty extends Activity { private static Gallery mGallery; private int[] images = { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.

《Android学习指南》文件夹

转自:http://android.yaohuiji.com/about Android学习指南的内容分类: 分类 描写叙述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这样会非常累. 1.Android学习指南基础篇 对于有Java基础的朋友,能够通过本分类60讲左右的课程,打下比較坚实的基础. 2.Android学习指南项目实训篇 对于学过"1.Android2.2学习指南基础篇"的朋友,能够通过本分类项目的联系,加深对基础

Android学习系列(40)--Android主题和样式之系统篇(下)

Widget样式(Widget Style) 特别说明,此处定义大量的系统内置控件的样式,对于重写原生控件的样式具有很大的参考价值. <!-- Widget styles --> <item name="absListViewStyle">@android:style/Widget.AbsListView</item> <item name="autoCompleteTextViewStyle">@android:st

Android学习路线(十)如何将Action Bar叠放在你的布局上

为了第六篇的完整性,这里先贴出原文,下次再来翻译::p 原文地址:http://developer.android.com/training/basics/actionbar/overlaying.html By default, the action bar appears at the top of your activity window, slightly reducing the amount of space available for the rest of your activi

《Android学习指南》目录

源:<Android学习指南>目录 Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这样会很累. 1.Android学习指南基础篇 对于有Java基础的朋友,可以通过本分类60讲左右的课程,打下比较坚实的基础. 2.Android学习指南项目实训篇 对于学过“1.Android2.2学习指南基础篇”的朋友,可以通过本分类项目的联系,加深对基础知识的理解和熟练运用. 3.Android学习指南提

Android 学习资料分享(2015 版)

我是如何自学Android,资料分享(2015 版) Tikitoo2015.02.11 10:21 1713 字 3932 次阅读 自己学了两三个月的Android,最近花了一周左右的时间写了个App--Diigoer(已开源),又花了一两周时间找工作,收到了两个Offer,也算是对自己学习的一种认可吧:我刚开始学习总结的--<我是如何自学Android,资料分享>,如果是初学Android 的话,不应该错过的,而今天这篇分享好这篇文章,相对于第一次写的会有所提升,所以建议先把上一篇看了,再

android学习路线:如何成长为高级工程师

博主参加了2014 CSDN博客之星评选,帮我投一票吧.点击给我投票前言之所以写这篇文章,是因为最近博客和我的开发群( 215680213 )中,不少小伙伴都让我讲讲android学习路线,所以我决定写一篇博客,来说明这个问题.既然有不少小伙伴来咨询这个问题,说明大家都还是想快速地提高技术,毕竟技术的提高是职业发展中不可或缺的一步,技术好了,才能得到认可,才能升职加薪.一般来说,快速提高技术是不太容易的,但是通过正确的方法加上辛勤的汗水是可以缩短这个过程的.或许有人会问,你凭什么来写这个学习路线

Android学习系列(17)--App列表之圆角ListView(续)

http://www.cnblogs.com/qianxudetianxia/archive/2011/09/19/2068760.html 本来这篇文章想并到上篇Android学习系列(16)--App列表之圆角ListView中的,但是若是如此就让大家错过一篇新的好的文章,着实可惜.上篇中我们使用shape,corners,gradient实现了一个渐变的圆角效果,但是在完文之后的实践中,我发现有时效果不甚满意,选中和放手的事件监听没有去正确的判断,然后渐变效果也比较单一,性能也觉得不是很快