`
sun201200204
  • 浏览: 299897 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android gallery实现图片的左右循环旋转源码分享

阅读更多


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)));
    }
  }
}
分享到:
评论

相关推荐

    UI开发第七篇之Android gallery实现图片的循环旋转

    在Android UI开发中,`Gallery`组件是一种可以展示多个项目并允许用户左右滑动选择的控件,常用于实现图片轮播或者选项选择等场景。本篇将详细讲解如何利用`Gallery`实现图片的循环旋转。 首先,我们需要在布局文件...

    UI开发之Android gallery实现图片的循环旋转

    在Android UI开发中,`Gallery`组件是一种可以展示多个图片并允许用户左右滑动选择的控件。在本文中,我们将深入探讨如何实现`Gallery`控件的图片循环旋转功能。 首先,我们要确保正确地初始化`Gallery`。在布局XML...

    Android_gallery图片左右循环旋转

    网上大神的文档,我整理了一下并加入一些自己的东西整理成工程共享给大家,内附大神文档,出处忘了,百度一搜全是此大神的文档。...不敢多要分,标准价,不是大神的代码不值分,而是并非原创不敢叫分。

    Android基于Gallery实现网络图片和本地图片循环播放

    - 为了实现循环播放,我们需要维护一个包含所有图片(包括网络和本地)的列表或数组,可以是URL字符串列表(对于网络图片)或者Bitmap列表(对于本地图片)。 6. **监听器**: - 为Gallery设置`...

    安卓Gallery实现异步加载网络图片源代码

    这个标题"安卓Gallery实现异步加载网络图片源代码"暗示我们将会探讨如何在Android的Gallery视图中实现从网络异步加载图片,提高用户体验,避免阻塞主线程。描述进一步指出,该实现会优化性能,仅在用户停止滚动时...

    Android Gallery 3张图无限循环 左右滑动都有效

    在这个场景中,提到的"Android Gallery 3张图无限循环 左右滑动都有效"是指一个特定的实现,即在`Gallery`中加载三张图片,并且当用户向左或向右滑动时,图片能够无缝地循环,形成一种无限滚动的效果。下面将详细...

    android Gallery 3d实现无限循环播放 用做广告板最后了

    在Android开发中,`Gallery`组件是一个非常有用的控件,它可以用来展示一系列的图片或其它内容,用户可以左右滑动来浏览。然而,原生的`Gallery`在Android API Level 16(Jelly Bean)之后已被废弃。尽管如此,...

    android 循环gallery 选中时图片放大 可按钮控制左右

    在这个特定的需求中,我们不仅需要让Gallery实现循环滚动,还要在选中图片时对其进行放大,并提供按钮来控制图片的左右切换,同时加入图片选中时的弹出动画效果。下面我们将详细讲解如何实现这些功能。 首先,我们...

    Android3D画廊Gallery实现无限循环和自动跳转

    本教程将深入讲解如何在Android应用中实现一个3D画廊(Gallery)组件,支持无限循环、自动跳转以及倒影效果。 首先,我们需要理解`Gallery`组件。`Gallery`是Android提供的一个HorizontalScrollView的扩展,用于...

    android Gallery实现异步加载网络图片 并只加载当前停止页面图.zip

    总的来说,这个`android Gallery实现异步加载网络图片 并只加载当前停止页面图`的示例展示了如何在Android应用中高效地处理大量网络图片的加载,通过异步加载和滚动监听,实现了只加载当前展示图片的策略,提升了...

    Android Gallery自定义ImageView和Gallery实现图片浏览功能

    Android Gallery 自定义ImageView和Gallery实现图片浏览功能,类似Android图库软件,主要实现的功能有:图片左右滑动、放大缩小、放大弹回、缩小弹回。 一开始使用Viewpager实现图片浏览,发现两张图片滑动时没有...

    Android应用源码之Gallery2_Android.zip

    Gallery2是一个针对Android平台的开源图片浏览应用,其源码为我们提供了一个深入理解Android系统中图片展示、手势操作以及图片库集成的实例。通过分析这个项目,我们可以学习到许多关于Android开发的重要知识点。 ...

    Gallery循环删除图片

    利用Adapter的notifyDataSetChanged()方法,可以在用户滚动到最后一张图片后重新加载数据,实现循环滚动的效果。这样,当用户试图向左滑动最后一张图片时,会显示第一张图片;向右滑动第一张图片时,会显示最后一张...

    android Gallery实现异步加载网络图片

    android Gallery实现异步加载网络图片 并只加载当前停止页面图

    Android Gallery 一次一张图片,可以循环显示,可显示当前为第几张图片

    在Android开发中,`Gallery`组件是一个非常实用的控件,用于展示一系列的图片或其它类型的数据,用户可以通过左右滑动来浏览。然而,`Gallery`已经在API Level 17被弃用了,取而代之的是`RecyclerView`配合`...

    android gallery实现图片拖动

    `02071003_Gallery(实现图片切换)`的代码可能展示了如何将`Gallery`的点击事件与`ImageSwitcher`的切换效果结合。这通常涉及到设置`OnItemClickListener`,并在点击事件中调用`ImageSwitcher`的`setImageResource...

    android 4.0 Gallery源码

    Gallery应用作为系统内置的图片查看器,它的源码对于我们理解Android图像处理、UI设计以及性能优化具有极高的学习价值。本文将深入探讨Android 4.0 Gallery源码,揭示其内部的工作机制和设计思想。 1. **架构设计**...

    可左右循环滑动的gallery图片轮播demo

    在这个特定的案例中,"可左右循环滑动的gallery图片轮播demo"是一个实现这种功能的示例项目,允许用户向左或向右滑动来浏览图片,同时支持自动定时切换,为用户提供流畅的浏览体验。 首先,我们要理解“左右循环...

    安卓Gallery照片墙画廊图库相关-Android实现左右滑动查看图片效果.rar

    综上所述,`Android实现左右滑动查看图片效果.rar`包含的源码可能涉及到了Android手势检测、图片加载与管理、自定义View或Adapter等关键知识点。通过学习和理解这些内容,开发者可以创建出更加交互友好的图片浏览...

    Android_Gallery3D源码(已编译)

    《Android_Gallery3D源码解析》 Gallery3D是Android平台上的一款3D图片浏览应用,它展示了Android系统中3D图形处理和图像展示的强大能力。这个应用的源码提供了深入理解Android图形库、线程管理、数据加载优化以及...

Global site tag (gtag.js) - Google Analytics