本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。
原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/
Gallery可以显示一系列的图片,并且可以横向滑动。下面展示如何使用Gallery去显示一系列的图片。
1. 创建一个工程,Gallery。
2. main.xml中的代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Images of San Francisco" />
<Gallery
android:id="@+id/gallery1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/image1"
android:layout_width="320dp"
android:layout_height="250dp"
android:scaleType="fitXY" />
</LinearLayout>
3. 在res/values文件夹下面新建一个文件,attrs.xml。
4. attrs.xml中的代码。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="Gallery1">
<attr name="android:galleryItemBackground" />
</declare-styleable>
</resources>
5. 准备一些图片。将这些图片放在res/drawable-mdpi下面。
6. GalleryActivity.java中的代码。
public class GalleryActivity extends Activity {
Integer[] imageIDs = {
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3,
R.drawable.pic4,
R.drawable.pic5,
R.drawable.pic6,
R.drawable.pic7
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Gallery gallery = (Gallery) findViewById(R.id.gallery1);
gallery.setAdapter(new ImageAdapter(this));
gallery.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v,
int position, long id)
{
Toast.makeText(getBaseContext(),
"pic" + (position + 1) + " selected",
Toast.LENGTH_SHORT).show();
ImageView imageView = (ImageView) findViewById(R.id.image1);
imageView.setImageResource(imageIDs[position]);
}
});
}
public class ImageAdapter extends BaseAdapter
{
Context context;
int itemBackground;
public ImageAdapter(Context c)
{
context = c;
//---setting the style---
TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
itemBackground = a.getResourceId(
R.styleable.Gallery1_android_galleryItemBackground, 0);
a.recycle();
}
//---returns the number of images---
public int getCount() {
return imageIDs.length;
}
//---returns the item---
public Object getItem(int position) {
return position;
}
//---returns the ID of an item---
public long getItemId(int position) {
return position;
}
//---returns an ImageView view---
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setImageResource(imageIDs[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setLayoutParams(new Gallery.LayoutParams(150, 120));
} else {
imageView = (ImageView) convertView;
}
imageView.setBackgroundResource(itemBackground);
return imageView;
}
}
}
7. 按F11在模拟器上面调试。会看见一系列的图片,这些图片可以左右滑动。当单击单个图片的时候,会弹出消息。
首先,我们在main.xml中添加Gallery和ImageView控件:
<Gallery
android:id="@+id/gallery1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ImageView
android:id="@+id/image1"
android:layout_width="320dp"
android:layout_height="250dp"
android:scaleType="fitXY" />
前面已经提到过,Gallery用来显示一系列的图片,ImageView用来显示被选中的图片。
这些图片的id被保存在imageIDs数组中:
Integer[] imageIDs = {
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3,
R.drawable.pic4,
R.drawable.pic5,
R.drawable.pic6,
R.drawable.pic7
};
接下来创建BaseAdapter的子类:ImageAdapter,这样一来,我们就能把Gallery与图片资源绑定在一起了。这个适配器起到了桥梁的作用。
使用BaseAdapter的视图的还有:
- ListView
- GridView
- Spinner
- Gallery
BaseAdapter也有一些子类:
- ListAdapter
- ArrayAdapter
- CursorAdapter
- SpinnerAdapter
在ImageAdapter中我们主要实现以下的方法:
public class ImageAdapter extends BaseAdapter
{
Context context;
int itemBackground;
public ImageAdapter(Context c)
{
context = c;
//---setting the style---
TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
itemBackground = a.getResourceId(
R.styleable.Gallery1_android_galleryItemBackground, 0);
a.recycle();
}
//---returns the number of images---
public int getCount() {
return imageIDs.length;
}
//---returns the item---
public Object getItem(int position) {
return position;
}
//---returns the ID of an item---
public long getItemId(int position) {
return position;
}
//---returns an ImageView view---
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setImageResource(imageIDs[position]);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setLayoutParams(new Gallery.LayoutParams(150, 120));
} else {
imageView = (ImageView) convertView;
}
imageView.setBackgroundResource(itemBackground);
return imageView;
}
}
分享到:
相关推荐
《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...
新版Android开发教程及笔记-完整版 《Android中文教程》中文版 《android基础教程合集》 Android实例教程 会员贡献索引贴 实用Android开发工具和资源精选 APK权限大全 - Android必懂知识 最无私的Android资料...
在Android开发中,HorizontalScrollView是一种常用的布局控件,它允许用户水平滚动其内部的子视图。本教程将深入探讨如何利用HorizontalScrollView实现一个类似Gallery的功能,为用户提供一种横向浏览内容的方式。 ...
在Android开发中,`Gallery`组件是一个非常有趣的控件,它可以用来展示一系列的图片或其它内容,用户可以左右滑动来浏览。本教程将详细讲解如何动态地向`Gallery`中添加图片,并实现倒影与3D翻转效果,使应用的用户...
《老罗Android开发视频教程》源码是一套专注于Android应用开发的教学资源,旨在帮助开发者深入理解和实践Android平台上的编程技术。在这个教程中,"gallery"控件是一个重要的学习焦点,它是一个可以展示图像轮播的...
在Android开发中,`Gallery`组件是一个非常有用的控件,它允许用户在水平方向上滚动浏览一系列项目,常用于图片或联系人选择等场景。在本教程中,我们将探讨如何在`Gallery`中实现选中时放大的效果,以提供更好的...
在Android开发中,3D Gallery是一种独特且引人入胜的图像展示方式,它通过模拟3D空间中的图片浏览,给用户带来更加生动的交互体验。本教程将深入讲解如何在Android应用中实现一个3D画廊(Gallery)组件,支持无限...
2. 创建一个适配器,例如使用ImageView和ArrayAdapter: ```java ArrayAdapter<String> adapter = new ArrayAdapter(this, android.R.layout.simple_gallery_item, imageList); gallery.setAdapter(adapter); ``` ...
在Android开发中,"Gallery"组件是用于展示图像的一个旧版控件,它允许用户通过水平滑动来浏览多张图片。这篇博客“Gallery使用教程——尝试翻译一篇Android SDK Reference”可能详细解释了如何在应用中集成并使用这...
在Android开发中,`Gallery`控件是一种非常实用的组件,它可以用来展示一系列横向滑动的项目,类似于图片轮播或者iOS中的CoverFlow效果。在本教程中,我们将深入探讨如何利用Android SDK中的`Gallery`控件来实现类似...
在Android开发中,Gallery控件是一个非常实用的组件,它允许用户通过左右滑动来浏览一系列的项目,常用于图片轮播、菜单选择等场景。本教程将深入讲解如何在Android应用中使用Gallery控件,并提供一个实际的使用示例...
在Android开发中,实现图片的3D效果及倒影效果是一项常见的需求,这可以为用户带来更丰富的视觉体验。在本教程中,我们将探讨如何在Android应用中创建这些特效,特别是针对`Gallery`组件的使用。 首先,让我们了解`...
在Android开发中,`Gallery`控件是一种古老但功能强大的组件,主要用于展示一系列的视图,如图片或小图标,并允许用户左右滑动来选择不同的项目。本教程将深入讲解如何利用`Gallery`控件创建出类似iPhone音乐播放器...
在Android开发中,`Gallery3D`是一种实现3D效果的滚动视图,它允许用户在多个项目之间进行平滑的3D切换,通常用于图片画廊或应用选择器等场景。下面我们将深入探讨如何创建和自定义一个Android `Gallery3D`效果。 ...
在Android开发中,`Gallery`组件是一个非常实用的控件,用于实现图片或者视图的横向滑动展示。`Gallery`允许用户通过左右滑动来查看位于屏幕两侧的部分内容,从而提供了一种高效的浏览方式。在本教程中,我们将深入...
因此,虽然`Gallery`在早期的Android开发中占有一定地位,但现在的学习者更应该关注`ViewPager`和`HorizontalScrollView`等替代方案。 总的来说,了解`Gallery`可以帮助我们理解早期Android UI设计的思路,同时也能...
在安卓开发中,`Gallery`组件是一个非常实用的控件,它允许用户通过左右滑动来浏览和选择图片或项目。本教程将深入探讨如何利用Android源码从SD卡中获取图片并显示在`Gallery`控件中。首先,我们需要理解Android对SD...
在Android应用开发中,"Gallery"通常指的是一个用于展示图像的控件,用户可以通过左右滑动来浏览图片。本教程将聚焦于如何从SD卡(外部存储)中获取图片并用Gallery显示。以下是对这个主题的详细讲解: 1. **...
在Android开发中,RecyclerView是一个非常重要的组件,它用于展示可滚动的数据列表,具有高效和灵活的特性。在本教程中,我们将深入探讨如何利用RecyclerView来实现一个类似Gallery的相册效果,提供用户友好的图像...