`
zhouxin464585932
  • 浏览: 78988 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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. gallery.setOnItemSelectedListener(new OnItemSelectedListener()
  27. {
  28. public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
  29. long arg3)
  30. {
  31. Toast.makeText(EX03_15.this, "当前位置:" + arg2, Toast.LENGTH_SHORT).show();
  32. }
  33. public void onNothingSelected(AdapterView<?> arg0)
  34. {
  35. }
  36. });
  37. }
  38. public class ImageAdapter extends BaseAdapter
  39. {
  40. /* 类成员 myContext为Context父类 */
  41. private Context myContext;
  42. /*声明GalleryItemBackground*/
  43. int mGalleryItemBackground;
  44. /* 使用android.R.drawable里的图片作为图库来源,类型为整数数组 */
  45. private int[] myImageIds =
  46. { R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4,
  47. R.drawable.a5, R.drawable.a27 };
  48. /* 构造器只有一个参数,即要存储的Context */
  49. public ImageAdapter(Context c)
  50. {
  51. myContext = c;
  52. /*
  53. * 使用在res/values/attrs.xml中的<declare-styleable>定义 的Gallery属性.
  54. */
  55. TypedArray a = obtainStyledAttributes(R.styleable.Gallery);
  56. /* 取得Gallery属性的Index id */
  57. mGalleryItemBackground = a.getResourceId(
  58. R.styleable.Gallery_android_galleryItemBackground, 0);
  59. /* 让对象的styleable属性能够反复使用 */
  60. a.recycle();
  61. }
  62. /* 返回所有已定义的图片总数量 */
  63. // public int getCount() { return this.myImageIds.length; }
  64. // 为了使资源循环使用
  65. public int getCount()
  66. {
  67. return Integer.MAX_VALUE;
  68. }
  69. /* 利用getItem方法,取得目前容器中图像的数组ID */
  70. public Object getItem(int position)
  71. {
  72. return position;
  73. }
  74. public long getItemId(int position)
  75. {
  76. return position;
  77. }
  78. /* 取得目前欲显示的图像View,传入数组ID值使之读取与成像 */
  79. public View getView(int position, View convertView, ViewGroup parent)
  80. {
  81. /* 创建一个ImageView对象 */
  82. ImageView i = new ImageView(this.myContext);
  83. i.setPadding(10, 10, 10, 10);
  84. i.setAlpha(80);
  85. // i.setImageResource(this.myImageIds[position]);
  86. if(position<0){
  87. position =position+myImageIds.length;
  88. }
  89. i.setImageResource(this.myImageIds[position% myImageIds.length]);
  90. i.setScaleType(ImageView.ScaleType.FIT_XY);
  91. i.setBackgroundResource(mGalleryItemBackground);
  92. /* 设置这个ImageView对象的宽高,单位为dip */
  93. i.setLayoutParams(new Gallery.LayoutParams(85, 72));
  94. return i;
  95. }
  96. /* 依据距离中央的位移量 利用getScale返回views的大小(0.0f to 1.0f) */
  97. public float getScale(boolean focused, int offset)
  98. {
  99. return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));
  100. }
  101. }
  102. }
复制代码
分享到:
评论

相关推荐

    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从系统Gallery获取图片具体实现

    在Android开发中,从系统Gallery获取图片是一项常见的需求,这通常涉及到用户交互和图片选择的过程。本篇将详细阐述如何实现这一功能。 首先,了解Gallery应用。Gallery是Android系统内置的一个图库应用,用于浏览...

Global site tag (gtag.js) - Google Analytics