`
crazier9527
  • 浏览: 1011381 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

三步走:第一步初始化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) */

  1. package irdc.ex03_15;

  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.content.res.TypedArray;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.AdapterView;
  9. import android.widget.BaseAdapter;
  10. import android.widget.Gallery;
  11. import android.widget.ImageView;
  12. import android.widget.TextView;
  13. import android.widget.Toast;
  14. import android.widget.AdapterView.OnItemSelectedListener;

  15. public class EX03_15 extends Activity
  16. {
  17.   private TextView mTextView01;
  18.   @Override
  19.   public void onCreate(Bundle savedInstanceState)
  20.   {
  21.     super.onCreate(savedInstanceState);
  22.     setContentView(R.layout.main);

  23.     Gallery gallery = ((Gallery) findViewById(R.id.myGallery1));
  24.     gallery.setAdapter(new ImageAdapter(this));
  25.     gallery.setSelection(200);
  26.     

  27.     gallery.setOnItemSelectedListener(new OnItemSelectedListener()
  28.     {

  29.       public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
  30.           long arg3)
  31.       {
  32.         Toast.makeText(EX03_15.this, "当前位置:" + arg2, Toast.LENGTH_SHORT).show();
  33.       }

  34.       public void onNothingSelected(AdapterView<?> arg0)
  35.       {

  36.       }
  37.     });
  38.   }

  39.   public class ImageAdapter extends BaseAdapter
  40.   {
  41.     /* 类成员 myContext为Context父类 */
  42.     private Context myContext;
  43.     /*声明GalleryItemBackground*/
  44.     int mGalleryItemBackground;

  45.     /* 使用android.R.drawable里的图片作为图库来源,类型为整数数组 */
  46.     private int[] myImageIds =
  47.     { R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4,
  48.         R.drawable.a5, R.drawable.a27 };

  49.     /* 构造器只有一个参数,即要存储的Context */
  50.     public ImageAdapter(Context c)
  51.     {
  52.       myContext = c;

  53.       /*
  54.        * 使用在res/values/attrs.xml中的<declare-styleable>定义 的Gallery属性.
  55.        */
  56.       TypedArray a = obtainStyledAttributes(R.styleable.Gallery);

  57.       /* 取得Gallery属性的Index id */
  58.       mGalleryItemBackground = a.getResourceId(
  59.           R.styleable.Gallery_android_galleryItemBackground, 0);

  60.       /* 让对象的styleable属性能够反复使用 */
  61.       a.recycle();
  62.     }

  63.     /* 返回所有已定义的图片总数量 */
  64.     // public int getCount() { return this.myImageIds.length; }
  65.     // 为了使资源循环使用
  66.     public int getCount()
  67.     {
  68.       return Integer.MAX_VALUE;
  69.     }

  70.     /* 利用getItem方法,取得目前容器中图像的数组ID */
  71.     public Object getItem(int position)
  72.     {
  73.       return position;
  74.     }

  75.     public long getItemId(int position)
  76.     {
  77.       return position;
  78.     }

  79.     /* 取得目前欲显示的图像View,传入数组ID值使之读取与成像 */
  80.     public View getView(int position, View convertView, ViewGroup parent)
  81.     {
  82.       /* 创建一个ImageView对象 */
  83.       ImageView i = new ImageView(this.myContext);
  84.       i.setPadding(10, 10, 10, 10);
  85.       i.setAlpha(80);
  86.       // i.setImageResource(this.myImageIds[position]);
  87.       if(position<0){
  88.         position =position+myImageIds.length;
  89.       }
  90.       i.setImageResource(this.myImageIds[position% myImageIds.length]);
  91.       i.setScaleType(ImageView.ScaleType.FIT_XY);
  92.       i.setBackgroundResource(mGalleryItemBackground);
  93.       /* 设置这个ImageView对象的宽高,单位为dip */
  94.       i.setLayoutParams(new Gallery.LayoutParams(85, 72));
  95.       return i;
  96.     }

  97.     /* 依据距离中央的位移量 利用getScale返回views的大小(0.0f to 1.0f) */
  98.     public float getScale(boolean focused, int offset)
  99.     {
  100.       return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));
  101.     }
  102.   }
  103. }

分享到:
评论

相关推荐

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

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

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

    通过以上步骤,我们成功实现了Android `Gallery`组件的图片循环旋转功能。这种方法充分利用了`BaseAdapter`的机制,结合适当的初始化设置和数据处理,为用户提供了流畅的无限滚动体验。在实际应用中,可以根据需求...

    Android_gallery图片左右循环旋转

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

    Android应用源码之Gallery2_Android.zip

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

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

    在Android开发中,实现一个基于Gallery的网络图片和本地图片循环播放功能,是常见的需求,尤其是在制作各种App的启动页、广告轮播或者个人相册等场景。这个功能的实现涉及到了Android UI组件、网络请求、图片加载库...

    android 4.0 Gallery源码

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

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

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

    android Gallery3D 最新源码

    总结,Gallery3D作为Android平台上的一个开源项目,其源码为我们揭示了高效3D图片浏览应用的实现原理,包括数据加载、3D渲染、UI设计和性能优化等多个方面的知识。通过深入学习和理解,开发者不仅能提升自己的...

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

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

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

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

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

    通过以上步骤,我们成功地实现了Android Gallery组件的循环滚动、图片选中放大以及左右按钮控制切换的功能,同时还为选中图片添加了弹出动画效果。在实际项目中,可能还需要根据具体需求进行优化,例如添加图片加载...

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

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

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

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

    Android4.4图库Gallery2源码

    《深入解析Android 4.4图库Gallery2源码》 Android 4.4系统中的图库应用Gallery2是一款至关重要的组件,它负责管理和展示用户的媒体文件,包括图片和视频。相较于之前的版本,Gallery2在功能和性能上都有显著的变化...

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

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

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

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

    Android_Gallery3D源码(已编译)

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

    android gallery实现图片拖动

    总的来说,实现“android gallery实现图片拖动”的功能需要以下几个步骤: 1. 在XML布局中添加`Gallery`和`ImageSwitcher`。 2. 创建自定义适配器,填充`Gallery`的数据。 3. 设置`OnItemClickListener`,监听`...

    Android应用源码模拟立体翻转效果,非Gallery实现.zip

    标题中的"Android应用源码模拟立体翻转效果,非Gallery实现.zip" 提供了一个源码示例,它展示了如何在不使用内置的Gallery组件的情况下,实现一个立体翻转效果。Gallery组件在较旧版本的Android API中被用于展示图像...

    Gallery循环删除图片

    在Android开发中,"Gallery循环删除图片"是一个常见的需求,主要涉及到 Gallery 组件的使用、Java反射机制的应用以及图片管理。下面将详细讲解这些知识点。 首先,Gallery 是 Android 提供的一种特殊的视图组件,...

Global site tag (gtag.js) - Google Analytics