http://www.eoeandroid.com/viewthread.php?tid=12007&highlight=gall
三步走:第一步初始化gallery时设置较大的初始化位置
Gallery gallery = ((Gallery) findViewById(R.id.myGallery1));
gallery.setAdapter(new ImageAdapter(this));
gallery.setSelection(200);
第二步:重写 BaseAdapter方法中的getCount时返回一个较大的值:
// 为了使资源循环使用
public int getCount()
{
return Integer.MAX_VALUE;
}
第三步:重写BaseAdapter时使用用position对集合大小取余的值,如下:
/* 取得目前欲显示的图像View,传入数组ID值使之读取与成像 */
public View getView(int position, View convertView, ViewGroup parent)
{
/* 创建一个ImageView对象 */
ImageView i = new ImageView(this.myContext);
i.setPadding(10, 10, 10, 10);
i.setAlpha(80);
// i.setImageResource(this.myImageIds[position]);
if(position<0){
position =position+myImageIds.length;
}
i.setImageResource(this.myImageIds[position% myImageIds.length]);
i.setScaleType(ImageView.ScaleType.FIT_XY);
i.setBackgroundResource(mGalleryItemBackground);
/* 设置这个ImageView对象的宽高,单位为dip */
i.setLayoutParams(new Gallery.LayoutParams(85, 72));
return i;
}
以下是该类的完整代码:
/* 依据距离中央的位移量 利用getScale返回views的大小(0.0f to 1.0f) */
package irdc.ex03_15;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
public class EX03_15 extends Activity
{
private TextView mTextView01;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Gallery gallery = ((Gallery) findViewById(R.id.myGallery1));
gallery.setAdapter(new ImageAdapter(this));
gallery.setSelection(200);
gallery.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3)
{
Toast.makeText(EX03_15.this, "当前位置:" + arg2, Toast.LENGTH_SHORT).show();
}
public void onNothingSelected(AdapterView<?> arg0)
{
}
});
}
public class ImageAdapter extends BaseAdapter
{
/* 类成员 myContext为Context父类 */
private Context myContext;
/*声明GalleryItemBackground*/
int mGalleryItemBackground;
/* 使用android.R.drawable里的图片作为图库来源,类型为整数数组 */
private int[] myImageIds =
{ R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4,
R.drawable.a5, R.drawable.a27 };
/* 构造器只有一个参数,即要存储的Context */
public ImageAdapter(Context c)
{
myContext = c;
/*
* 使用在res/values/attrs.xml中的<declare-styleable>定义 的Gallery属性.
*/
TypedArray a = obtainStyledAttributes(R.styleable.Gallery);
/* 取得Gallery属性的Index id */
mGalleryItemBackground = a.getResourceId(
R.styleable.Gallery_android_galleryItemBackground, 0);
/* 让对象的styleable属性能够反复使用 */
a.recycle();
}
/* 返回所有已定义的图片总数量 */
// public int getCount() { return this.myImageIds.length; }
// 为了使资源循环使用
public int getCount()
{
return Integer.MAX_VALUE;
}
/* 利用getItem方法,取得目前容器中图像的数组ID */
public Object getItem(int position)
{
return position;
}
public long getItemId(int position)
{
return position;
}
/* 取得目前欲显示的图像View,传入数组ID值使之读取与成像 */
public View getView(int position, View convertView, ViewGroup parent)
{
/* 创建一个ImageView对象 */
ImageView i = new ImageView(this.myContext);
i.setPadding(10, 10, 10, 10);
i.setAlpha(80);
// i.setImageResource(this.myImageIds[position]);
if(position<0){
position =position+myImageIds.length;
}
i.setImageResource(this.myImageIds[position% myImageIds.length]);
i.setScaleType(ImageView.ScaleType.FIT_XY);
i.setBackgroundResource(mGalleryItemBackground);
/* 设置这个ImageView对象的宽高,单位为dip */
i.setLayoutParams(new Gallery.LayoutParams(85, 72));
return i;
}
/* 依据距离中央的位移量 利用getScale返回views的大小(0.0f to 1.0f) */
public float getScale(boolean focused, int offset)
{
return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));
}
}
}
分享到:
相关推荐
在Android UI开发中,`Gallery`组件是一种可以展示多个项目并允许用户左右滑动选择的控件,常用于实现图片轮播或者选项选择等场景。本篇将详细讲解如何利用`Gallery`实现图片的循环旋转。 首先,我们需要在布局文件...
在Android UI开发中,`Gallery`组件是一种可以展示多个图片并允许用户左右滑动选择的控件。在本文中,我们将深入探讨如何实现`Gallery`控件的图片循环旋转功能。 首先,我们要确保正确地初始化`Gallery`。在布局XML...
网上大神的文档,我整理了一下并加入一些自己的东西整理成工程共享给大家,内附大神文档,出处忘了,百度一搜全是此大神的文档。...不敢多要分,标准价,不是大神的代码不值分,而是并非原创不敢叫分。
- 为了实现循环播放,我们需要维护一个包含所有图片(包括网络和本地)的列表或数组,可以是URL字符串列表(对于网络图片)或者Bitmap列表(对于本地图片)。 6. **监听器**: - 为Gallery设置`...
这个标题"安卓Gallery实现异步加载网络图片源代码"暗示我们将会探讨如何在Android的Gallery视图中实现从网络异步加载图片,提高用户体验,避免阻塞主线程。描述进一步指出,该实现会优化性能,仅在用户停止滚动时...
在这个场景中,提到的"Android Gallery 3张图无限循环 左右滑动都有效"是指一个特定的实现,即在`Gallery`中加载三张图片,并且当用户向左或向右滑动时,图片能够无缝地循环,形成一种无限滚动的效果。下面将详细...
在Android开发中,`Gallery`组件是一个非常有用的控件,它可以用来展示一系列的图片或其它内容,用户可以左右滑动来浏览。然而,原生的`Gallery`在Android API Level 16(Jelly Bean)之后已被废弃。尽管如此,...
在这个特定的需求中,我们不仅需要让Gallery实现循环滚动,还要在选中图片时对其进行放大,并提供按钮来控制图片的左右切换,同时加入图片选中时的弹出动画效果。下面我们将详细讲解如何实现这些功能。 首先,我们...
本教程将深入讲解如何在Android应用中实现一个3D画廊(Gallery)组件,支持无限循环、自动跳转以及倒影效果。 首先,我们需要理解`Gallery`组件。`Gallery`是Android提供的一个HorizontalScrollView的扩展,用于...
总的来说,这个`android Gallery实现异步加载网络图片 并只加载当前停止页面图`的示例展示了如何在Android应用中高效地处理大量网络图片的加载,通过异步加载和滚动监听,实现了只加载当前展示图片的策略,提升了...
Android Gallery 自定义ImageView和Gallery实现图片浏览功能,类似Android图库软件,主要实现的功能有:图片左右滑动、放大缩小、放大弹回、缩小弹回。 一开始使用Viewpager实现图片浏览,发现两张图片滑动时没有...
Gallery2是一个针对Android平台的开源图片浏览应用,其源码为我们提供了一个深入理解Android系统中图片展示、手势操作以及图片库集成的实例。通过分析这个项目,我们可以学习到许多关于Android开发的重要知识点。 ...
利用Adapter的notifyDataSetChanged()方法,可以在用户滚动到最后一张图片后重新加载数据,实现循环滚动的效果。这样,当用户试图向左滑动最后一张图片时,会显示第一张图片;向右滑动第一张图片时,会显示最后一张...
android Gallery实现异步加载网络图片 并只加载当前停止页面图
在Android开发中,`Gallery`组件是一个非常实用的控件,用于展示一系列的图片或其它类型的数据,用户可以通过左右滑动来浏览。然而,`Gallery`已经在API Level 17被弃用了,取而代之的是`RecyclerView`配合`...
`02071003_Gallery(实现图片切换)`的代码可能展示了如何将`Gallery`的点击事件与`ImageSwitcher`的切换效果结合。这通常涉及到设置`OnItemClickListener`,并在点击事件中调用`ImageSwitcher`的`setImageResource...
Gallery应用作为系统内置的图片查看器,它的源码对于我们理解Android图像处理、UI设计以及性能优化具有极高的学习价值。本文将深入探讨Android 4.0 Gallery源码,揭示其内部的工作机制和设计思想。 1. **架构设计**...
在这个特定的案例中,"可左右循环滑动的gallery图片轮播demo"是一个实现这种功能的示例项目,允许用户向左或向右滑动来浏览图片,同时支持自动定时切换,为用户提供流畅的浏览体验。 首先,我们要理解“左右循环...
综上所述,`Android实现左右滑动查看图片效果.rar`包含的源码可能涉及到了Android手势检测、图片加载与管理、自定义View或Adapter等关键知识点。通过学习和理解这些内容,开发者可以创建出更加交互友好的图片浏览...
《Android_Gallery3D源码解析》 Gallery3D是Android平台上的一款3D图片浏览应用,它展示了Android系统中3D图形处理和图像展示的强大能力。这个应用的源码提供了深入理解Android图形库、线程管理、数据加载优化以及...