Android攻城狮Gallery和ImageSwitcher制作图片浏览器

使用Gallery 和 ImageSwitcher 制作图片浏览器
Gallery介绍
我们有时候在手机上或者PC上看到动态的图片,可以通过鼠标或者手指触摸来移动它,产生动态的图片滚动效果,还可以根据你的点击或者触摸来触发其他事件响应。同样的,在Android中也提供这种实现,这就是通过Gallery在UI上实现缩略图浏览器。
-------------------------
谷歌已经将Gallery列为过期的控件,建议使用HorizonScrollView或者ViewPager。
-------------------------
查看源码不难发现 ArrayAdapter 和 SimpleAdapter 都继承了 BaseAdapter。
所以,我们也可以自己定义一个适配器!自定义的好处是自由度、灵活性会更大。
BaseAdapter中的重要方法
(1)public int getCount()——返回一定义的数据源的总数量
(2)public Object getItem(int position)
    public long getItemId(int position)
——告诉适配器取得目前容器中的数据ID和对象
(3)public View getView(int position,View convertView,ViewGroupparent)——取得目前要显示的图像View,传入数组ID值使之读取与成像。
-----------------------------------
使用 Gallery 浏览图片的步骤:
1. 在 main.xml 中添加 Gallery标签。
2. 在 MainActivity 中创建数据源,这里就是 int数组存放图片id。
3. 自定义适配器。创建一个新类 ImageAdapter ,继承 BaseAdapter。重写getView(int position, View view, ViewGroup viewGroup)方法。
4. 在 MainActivity加载适配器。
自定义适配器的步骤
1. 创建一个新类 IamgeAdapter ,继承BaseAdapter。
2. 为了接收参数,需要构建有参的构造方法:
    private  int[]res; //用于接收数据源
    private Context context;//上下文信息,ImageView的初始化会用到
    //构造有参构造方法
    public ImageAdapter(int[]res,Context context){
        this.res=res;
        this.context=context;
    }
3. 重写getView(),把图片ID(这里是res[position])转变为 ImageView,并返回 ImageView:
public View getView(int position, View view, ViewGroup viewGroup) {
    ImageView image = new ImageView(context);
    image.setBackgroundResource(res[position]);
    //设置图片(ImageView)在Gallery中的缩略图的大小
    image.setLayoutParams(new Gallery.LayoutParams(400,300));//宽是400,高是300
    //设置缩放比例(scale)采取的类型
    image.setScaleType(ImageView.ScaleType.FIT_XY);//横向X-Y轴的拉伸
    return image;
}
其他方法的重写,写法固定:
public int getCount() {
        return res.length;
}
public Object getItem(int position) {
        return res[position];
}
public long getItemId(int position) {
        return position;
}
无限轮播图片的实现:
1. 改写 ImageAdapter 适配器的 onCount()方法,使它返回整数最大值 Integer.MAX_VALUE。
2. 改写 getView():image.setBackgroundResource(res[position%res.length]);
由于数组res的下标的上限是 Integer.MAX_VALUE,所以 position%res.length 的运算结果是一个循环数组。这样就实现了循环播放图片。
---------------------------------------------
ImageSwitcher实现大图浏览的步骤:
1. 在 main.xml 中添加 ImageSwitcher标签。
2. 让 MainActivity 继承接口 ViewFactory。重写方法 makeView():
    public View makeView() {
        ImageView image = new ImageView(this);//初始化ImageView对象
        image.setScaleType(ImageView.ScaleType.FIT_CENTER);//保持宽高比例,并且居中显示
        return image;
    }
    重写 onItemSelected(),只写一句:imageSwitcher.setBackgroundResource(res[position%res.length]);//imageSwitch加载图片资源。
3. 在 MainActivity 中创建和初始化 ImageSwitcher 的对象。之后加载工厂:imageSwitcher.setFactory(this);
   然后就是加载动画效果,比如:imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));//淡入的效果

ImageSwitcher 大图浏览
ImageSwitcher 和 ImageView 的功能有点类似,他们都可以用于显示图片,区别在于 ImageSwitcher 的效果更炫,它可以指定图片切换时的动画效果。
为了让 ImageSwitcher 加载图片,必须让MainActivity实现接口ViewFactory。
---------------------------------------
ViewFactory的使用
ImageSwitcher 粗略的理解就是 ImageView 的选择器,它需要设置 ViewFactory。一般情况下,我们让该 ViewFactory 的 makeView()方法返回 ImageView。
-----------------------------------
为ImageSwitcher加入动画
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));//淡入的效果
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));//淡出的效果



				
时间: 2024-10-12 16:56:56

Android攻城狮Gallery和ImageSwitcher制作图片浏览器的相关文章

创业公司求IOS、Android攻城狮一枚

地点:北京CBD附近(地铁1号线大望路) 魅力值:送珍贵期权 你要会: 1. IOS或者Android开发 2.能够处理类似微视/秒拍的视频录制功能 3.熟悉json 4.做过第三方登录 5.爱学习 6.no zuo 7.工作经验不限 如果你适合,就别再犹豫,发简历到[email protected](饶先生),或者加TA QQ随便骚扰,TA正在求骚扰 创业公司求IOS.Android攻城狮一枚,布布扣,bubuko.com

Android攻城狮学习笔记-进阶篇一

第1章 AndroidManifest配置文件 第2章 使用ListView显示信息列表 第3章 使用DatePicker及TimePicker显示当前日期和时间 第4章 使用GridView以表格形式显示多张照片 第5章 使用Spinner实现下拉列表 第6章 使用ProgressBar实现进度条 第7章 使用WebView显示网页 第8章 Fragment基础 第9章 Fragment与Activity通信 第10章 使用ViewPager实现导航 第11章 使用ViewFilpper实现屏

Android攻城狮布局优化

Android常用的布局样式 1.LinearLayout(线性布局) 线性的 垂直的 水平的 2.RelativeLayout(相对布局) 最灵活的 3.TableLayout(表格布局) 现在被 GridView代替 4.AbsoluteLayout(绝对布局) 已淘汰 5.FrameLayout(帧布局) 布局叠加时使用 现在基本使用线性布局和相对布局,特殊情况会使用帧布局(视频暂停.缓冲文件等). Android布局原则 1.尽量多使用LinearLayout(线性布局)和Relativ

Android攻城狮基础动画

Android基础动画 1. Tween Animation 变换动画 2. Frame Animation 帧动画 3. Layout Animation 布局动画 4. Property Animation 属性动画 Tween Animation(变换动画)在Android中又被分为四种: Alpha:渐变透明度动画 Scale:渐变尺寸缩放动画 Translate:位置移动动画 Rotate:旋转动画 Tween Animation共同属性: 1. Duration:动画持续时间(单位:

Android攻城狮四种基础动画

AlphaAnimation(透明动画) 1.xml文件 <set xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 渐变动画,表示从透明度10%到100%,持续时间为1秒 --> <alpha android:fromAlpha="0.1" android:toAlpha="1" android:duration="1000&

Android攻城狮动画组合

组合动画 案例一(续播1): 两个动画A和B,先播放动画A,设置A的AnimationListener(会重写3个方法),当其中一个方法onAnimationEnd()触发,也就是当A播放完毕的时候,开始播放B.核心代码如下: Animation loadAnimation = AnimationUtils.loadAnimation( this, R.anim.translate ); image.startAnimation(loadAnimation); // 开启动画A Animatio

Android攻城狮布局动画

LayoutAnimation(布局动画) 为View Groups添加动画 使用LayoutAnimationController 如图,给一个listView设置动画,使用了新的方法:setLayoutAnimation(). setOrder(LayoutAnimationController.XXXX)是设置动画的顺序,例如 ORDER.RANDOM 表示一个随机的顺序. listView就相当于一个View Groups,是一个容纳了很多View的(集合)视图组.然后我们通过布局动画把

Android攻城狮 Android中更新UI的几种方式

Android中更新UI的几种方式: 1. Activity 的 runOnUiThread() 2. Handler 的 post() 3. Handler 的 sendMessage() 4. View 的 post() 1 public class FiveActivity extends Activity { 2 3 private TextView textView; 4 5 private Handler handler = new Handler() { 6 public void

Android攻城狮GridView(主菜单)

GridView布局文件声明GridViewjava里创建GridView 配置 1.准备数据源 2.新建适配器(SimpleAdapter) 3.GridView加载适配器 4.GridView配置监听器(OnItemClickListener) gridView实现过程: 1.准备数据源 dataList=new ArrayList<Map<String,Object>>(); 2.新建适配器(SimpleAdapter) adapter=new SimpleAdapter(t