安卓开发复习笔记——Gallery组件+ImageSwitcher组件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了安卓开发复习笔记——Gallery组件+ImageSwitcher组件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含8838字,纯文字阅读大概需要13分钟。
内容图文
![安卓开发复习笔记——Gallery组件+ImageSwitcher组件](/upload/InfoBanner/zyjiaocheng/1099/d92e5b05844d4d6d94438dcca44829ec.jpg)
什么是Gallery?
Gallery是一个水平的列表选择框,它允许用户通过拖动来查看上一个、下一个列表选项。
下图是今天要实现的最终效果:
利用Gallery组件实现的一个横向显示图像列表,可以通过左、右滑动屏幕来切换图像,并加上ImageSwitcher实现一个大图片预览功能。
1、一步一步来吧,首先先解决下上半部分(图像导航)
先来看下效果图,下图是利用Gallery组件实现的一个横向显示图像列表,可以通过左、右滑动屏幕来切换图像。
直接上代码,注释很全。
MainActivity.java
1 package com.example.galleytest; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.widget.Gallery; 6 /** 7 * 8 * @author Balla_兔子 9 * 和往常控制使用方法大同小异 10 * 1、获取数据源 11 * 2、配置适配器 12 * 3、绑定适配器 13 */ 14 public class MainActivity extends Activity { 1516private Gallery gallery;// 声明gallery对象17private ImageAdapter adapter;//声明自定义adapter对象 1819// 1、定义数据源20privateint[] images = { R.drawable.item1, R.drawable.item2, 21 R.drawable.item3, R.drawable.item4, R.drawable.item5, 22 R.drawable.item6, R.drawable.item7, R.drawable.item8, 23 R.drawable.item9, R.drawable.item10, R.drawable.item11, 24 R.drawable.item12 }; 2526 @Override 27protectedvoid onCreate(Bundle savedInstanceState) { 28super.onCreate(savedInstanceState); 29 setContentView(R.layout.activity_main); 3031 gallery=(Gallery) findViewById(R.id.gallery);//取得对象 3233//2、设置适配器34 adapter=new ImageAdapter(images, this);//实例化自定义适配器对象 3536//3、绑定适配器37 gallery.setAdapter(adapter); 3839 } 4041 }
ImageAdapter.java
1 package com.example.galleytest; 2 3 import android.content.Context; 4 import android.view.View; 5 import android.view.ViewGroup; 6 import android.widget.BaseAdapter; 7 import android.widget.Gallery; 8 import android.widget.ImageView; 9 import android.widget.ImageView.ScaleType; 10 11 // 自定义适配器,继承BaseAdapter复写方法 12 public class ImageAdapter extends BaseAdapter { 1314privateint images[]; 15private Context context; 16public ImageAdapter(int res[],Context context){ 17this.images=res; 18this.context=context; 19 } 20 @Override 21//获取资源总长度22publicint getCount() { 23return images.length; 24 } 2526 @Override 27//根据下标id获取资源对象28public Object getItem(int position) { 29return images[position]; 30 } 3132 @Override 33//根据返回下标id34publiclong getItemId(int position) { 35return position; 36 } 3738 @Override 39//根据下标id返回对象的视图view40public View getView(int position, View convertView, ViewGroup parent) { 41//利用ImageView返回图像展示42 ImageView imageView=new ImageView(context); 43//设置ImageView背景图44 imageView.setBackgroundResource(images[position]); 45//setLayoutParams()这个函数用于代码自定义布局,为创建的view(ImageView)对象设置位置,大小,颜色等一系列的属性46 imageView.setLayoutParams(new Gallery.LayoutParams(200, 150)); 47//设置展示缩放风格48 imageView.setScaleType(ScaleType.FIT_XY); 49return imageView; 50 } 5152 }
activity_main.xml
1 < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" 2 xmlns:tools ="http://schemas.android.com/tools" 3 android:layout_width ="match_parent" 4 android:layout_height ="match_parent" 5 android:paddingBottom ="@dimen/activity_vertical_margin" 6 android:paddingLeft ="@dimen/activity_horizontal_margin" 7 android:paddingRight ="@dimen/activity_horizontal_margin" 8 android:paddingTop ="@dimen/activity_vertical_margin" 9 android:orientation ="vertical" 10 tools:context ="com.example.galleytest.MainActivity" > 11 < Gallery 12 android:id ="@+id/gallery" 13 android:layout_width ="fill_parent" 14 android:layout_height ="wrap_content" 15 /> 16 17 </ LinearLayout >
执行完上面代码我们会发现,当图片滚动到第一张或者最后一张,就自动停止, 我们可以把它设置成无限循环重复的去展示这些图片。
这里我们只需要去改动自定义ImageAdapter适配器里2个位置就可以实现这个无限循环的效果
其一:返回图片资源长度,我们返回的长度不再是数组长度,而是一个巨大数
1 // 获取资源总长度 2 public int getCount() { 3 // return images.length; 4 return Integer.MAX_VALUE;//返回一个巨大数5 }
其二:为ImageView设置图片显示资源,我们用取余的方法,让它实现无限循环
1 public View getView(int position, View convertView, ViewGroup parent) { 2//利用ImageView返回图像展示 3 ImageView imageView=new ImageView(context); 4//设置ImageView背景图 5 imageView.setBackgroundResource(images[position%images.length]); //用取余的方法,让它实现无限循环 6//setLayoutParams()这个函数用于代码自定义布局,为创建的view(ImageView)对象设置位置,大小,颜色等一系列的属性 7 imageView.setLayoutParams(new Gallery.LayoutParams(200, 150)); 8//设置展示缩放风格 9 imageView.setScaleType(ScaleType.FIT_XY); 10return imageView; 11 }
无限循环轻松搞定,再试试看效果吧~
2、结合ImageSwitcher组件,使得图片浏览效果更为流畅(可以把ImageSwitcher粗略的想象成ImageView的加强版,它可以带来很多效果,比如图片动画)
直接上代码,依旧人性化注释全面~
MainActivity.java
1 package com.example.galleytest; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.animation.AnimationUtils; 7 import android.widget.AdapterView; 8 import android.widget.Gallery; 9 import android.widget.ImageSwitcher; 10 import android.widget.ImageView; 11 import android.widget.ImageView.ScaleType; 12 import android.widget.ViewSwitcher.ViewFactory; 13 /** 14 * 15 * @author Balla_兔子 16 * 和往常控制使用方法大同小异 17 * 1、获取数据源 18 * 2、配置适配器 19 * 3、绑定适配器 20 * 21 * 为Grallery设置监听,因要结合ImageSwitcher,这里需要额外的实现一个图像制造工厂ViewFactory 22 */ 23 public class MainActivity extends Activity implements android.widget.AdapterView.OnItemSelectedListener,ViewFactory{ 2425private Gallery gallery;// 声明gallery对象26private ImageSwitcher imageSwitcher;//声明一个ImageSwitcher对象27private ImageAdapter adapter;//声明自定义adapter对象 2829// 1、定义数据源30privateint[] images = { R.drawable.item1, R.drawable.item2, 31 R.drawable.item3, R.drawable.item4, R.drawable.item5, 32 R.drawable.item6, R.drawable.item7, R.drawable.item8, 33 R.drawable.item9, R.drawable.item10, R.drawable.item11, 34 R.drawable.item12 }; 3536 @Override 37protectedvoid onCreate(Bundle savedInstanceState) { 38super.onCreate(savedInstanceState); 39 setContentView(R.layout.activity_main); 4041 gallery=(Gallery) findViewById(R.id.gallery);//取得对象42 imageSwitcher=(ImageSwitcher) findViewById(R.id.imageSwitcher);//取得对象 4344//添加监听45 gallery.setOnItemSelectedListener(this); 46 imageSwitcher.setFactory(this); 47//设置动画效果,图片在imageSwitch的渐入渐出效果48 imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in)); 49 imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out)); 505152//2、设置适配器53 adapter=new ImageAdapter(images, this);//实例化自定义适配器对象 5455//3、绑定适配器56 gallery.setAdapter(adapter); 5758 } 5960 @Override 61//实现ViewFactory里的制造图像方法,这里需要返回一个view对象,同样的我们可以采用返回ImageView62public View makeView() { 63 ImageView imageView=new ImageView(this); 64 imageView.setScaleType(ScaleType.FIT_CENTER);//展示效果65return imageView; 66 } 6768//Gallery组件的监听器69 @Override 70publicvoid onItemSelected(AdapterView<?> parent, View view, int position, 71long id) { 72 imageSwitcher.setBackgroundResource(images[position%images.length]); 73 } 7475 @Override 76publicvoid onNothingSelected(AdapterView<?> parent) { 7778 } 7980 }
ImageAdapter.java
1 package com.example.galleytest; 2 3 import android.content.Context; 4 import android.view.View; 5 import android.view.ViewGroup; 6 import android.widget.BaseAdapter; 7 import android.widget.Gallery; 8 import android.widget.ImageView; 9 import android.widget.ImageView.ScaleType; 10 11 // 自定义适配器,继承BaseAdapter复写方法 12 public class ImageAdapter extends BaseAdapter { 1314privateint images[]; 15private Context context; 16public ImageAdapter(int res[],Context context){ 17this.images=res; 18this.context=context; 19 } 20 @Override 21//获取资源总长度22publicint getCount() { 23//return images.length;24return Integer.MAX_VALUE;//返回一个巨大数25 } 2627 @Override 28//根据下标id获取资源对象29public Object getItem(int position) { 30return images[position]; 31 } 3233 @Override 34//根据返回下标id35publiclong getItemId(int position) { 36return position; 37 } 3839 @Override 40//根据下标id返回对象的视图view41public View getView(int position, View convertView, ViewGroup parent) { 42//利用ImageView返回图像展示43 ImageView imageView=new ImageView(context); 44//设置ImageView背景图45 imageView.setBackgroundResource(images[position%images.length]); //用取余的方法,让它实现无限循环 46//setLayoutParams()这个函数用于代码自定义布局,为创建的view(ImageView)对象设置位置,大小,颜色等一系列的属性47 imageView.setLayoutParams(new Gallery.LayoutParams(200, 150)); 48//设置展示缩放风格49 imageView.setScaleType(ScaleType.FIT_XY); 50return imageView; 51 } 5253 }
activity_main.xml
1 < LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" 2 xmlns:tools ="http://schemas.android.com/tools" 3 android:layout_width ="match_parent" 4 android:layout_height ="match_parent" 5 android:paddingBottom ="@dimen/activity_vertical_margin" 6 android:paddingLeft ="@dimen/activity_horizontal_margin" 7 android:paddingRight ="@dimen/activity_horizontal_margin" 8 android:paddingTop ="@dimen/activity_vertical_margin" 9 android:orientation ="vertical" 10 tools:context ="com.example.galleytest.MainActivity" > 11 < Gallery 12 android:id ="@+id/gallery" 13 android:layout_width ="fill_parent" 14 android:layout_height ="wrap_content" 15 /> 16 17 < ImageSwitcher 18 android:id ="@+id/imageSwitcher" 19 android:layout_height ="wrap_content" 20 android:layout_width ="fill_parent" 21 android:layout_marginTop ="20dp" 22 ></ ImageSwitcher > 23 </ LinearLayout >
原文:http://www.cnblogs.com/lichenwei/p/3961552.html
内容总结
以上是互联网集市为您收集整理的安卓开发复习笔记——Gallery组件+ImageSwitcher组件全部内容,希望文章能够帮你解决安卓开发复习笔记——Gallery组件+ImageSwitcher组件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。