ImageSwitcher (图像切换器,显示图片)

ImageSwitcher继承了ViewSwitcher,主要在切换图片时加入动画效果

使用方法:

    1.为ImageSwitcher提供一个ViewFactory,该ViewFactory生成的View组件必须是ImageView

    2.切换图片时,用到的3个方法:imageSwitcher.setImageDrawable(Drawable drawable);

                    imageSwitcher.setImageResource(int resid);

                    imageSwitcher.setImageURI(URI uri);


1.java代码:


  1 package gdp.switcherview2;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import android.app.Activity;
9 import android.os.Bundle;
10 import android.view.Menu;
11 import android.view.View;
12 import android.view.ViewGroup.LayoutParams;
13 import android.widget.AdapterView;
14 import android.widget.AdapterView.OnItemClickListener;
15 import android.widget.AdapterView.OnItemSelectedListener;
16 import android.widget.GridView;
17 import android.widget.ImageSwitcher;
18 import android.widget.ImageView;
19 import android.widget.SimpleAdapter;
20 import android.widget.Toast;
21 import android.widget.ViewSwitcher.ViewFactory;
22
23 public class MainActivity extends Activity {
24 //声明一个数组,用来装载图片资源
25 int[] imageIds = new int[]{R.drawable.baiyang, R.drawable.chunv, R.drawable.jinniu, R.drawable.juxie,
26 R.drawable.mojie, R.drawable.sheshou, R.drawable.shizi, R.drawable.shuangyu,
27 R.drawable.shuangzi, R.drawable.shuiping, R.drawable.tiancheng, R.drawable.tianxie};
28 //声明ImageSwitcher对象
29 private ImageSwitcher switcher ;
30 @Override
31 protected void onCreate(Bundle savedInstanceState) {
32 super.onCreate(savedInstanceState);
33 setContentView(R.layout.main);
34
35 //创建一个List对象,其元素Map
36 List<Map<String, Object>> listItems = new ArrayList<Map<String,Object>>();
37 for(int i = 0; i<imageIds.length; i++){
38 Map<String, Object> listItem = new HashMap<String, Object>();
39 listItem.put("image", imageIds[i]);
40 listItems.add(listItem);
41 }
42
43 //获取显示图片的ImageSwitcher
44 switcher = (ImageSwitcher)findViewById(R.id.switcher);
45 //为imageSwicher设置图片切换的动画效果
46 switcher.setFactory(new ViewFactory() {
47
48 @Override
49 public View makeView() {
50 // 创建imageView对象
51 ImageView imageView = new ImageView(MainActivity.this);
52 imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
53 imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,
54 LayoutParams.WRAP_CONTENT));
55 //返回ImageView对象
56 return imageView;
57 }
58 });
59 //创建Adapter
60 SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems, R.layout.cell, new String[]{"image"}, new int[]{R.id.image1});
61 GridView grid = (GridView)findViewById(R.id.grid01);
62 grid.setAdapter(simpleAdapter);
63 //添加列表项被点击的监听器
64 grid.setOnItemClickListener(new ItemClick());
65 //添加列表项被选中的监听器
66 grid.setOnItemSelectedListener(new ItemSelect());
67 }
68
69 class ItemClick implements OnItemClickListener{
70
71 @Override
72 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
73 long arg3) {
74 // TODO Auto-generated method stub
75 switcher.setImageResource(imageIds[arg2]);
76 }
77
78 }
79
80 class ItemSelect implements OnItemSelectedListener{
81
82 @Override
83 public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
84 long arg3) {
85 // TODO Auto-generated method stub
86 switcher.setImageResource(imageIds[arg2]);
87 }
88
89 @Override
90 public void onNothingSelected(AdapterView<?> arg0) {
91 // TODO Auto-generated method stub
92 Toast.makeText(MainActivity.this, "Nothing Selected" , Toast.LENGTH_LONG).show();
93 }
94
95 }
96
97 @Override
98 public boolean onCreateOptionsMenu(Menu menu) {
99 // Inflate the menu; this adds items to the action bar if it is present.
100 getMenuInflater().inflate(R.menu.main, menu);
101 return true;
102 }
103
104 }

2.xml文件

main.xml


 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="fill_parent"
3 android:layout_height="fill_parent"
4 android:orientation="vertical"
5 android:gravity="center_horizontal" >
6 <!-- 定义一个GridView组件 -->
7 <GridView
8 android:id="@+id/grid01"
9 android:layout_width="fill_parent"
10 android:layout_height="wrap_content"
11 android:horizontalSpacing="2dp"
12 android:verticalSpacing="2dp"
13 android:numColumns="4"
14 android:gravity="center"
15 />
16 <!-- 定义一个ImageSwitcher组件 -->
17 <ImageSwitcher
18 android:id="@+id/switcher"
19 android:layout_width="300dp"
20 android:layout_height="300dp"
21 android:layout_gravity="center_horizontal"
22 android:inAnimation="@android:anim/fade_in"
23 android:outAnimation="@android:anim/fade_out"
24 />
25 </LinearLayout>

cell.xml


 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:layout_width="fill_parent"
3 android:layout_height="fill_parent"
4 android:orientation="vertical" >
5 <ImageView
6 android:id="@+id/image1"
7 android:layout_width="fill_parent"
8 android:layout_height="fill_parent"
9 android:scaleType="fitXY"
10 />
11 </LinearLayout>

ImageSwitcher (图像切换器,显示图片)

时间: 2024-12-16 18:16:15

ImageSwitcher (图像切换器,显示图片)的相关文章

android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)

         GridView用于在界面上按行.列分布显示多个组件.GridView和ListView有共同父类:AbsListView.GridView与ListView的区别在于:ListView只在一个方向上分布,GridView在两个方向上分布.所以使用GridView时一般都指定numColumns大于1,否则该属性默认值为1,就意味着改GridView只有一列,那就变成了ListView GridView的xml属性 android:strtchMode 的值为:      Im

基于图像切换器(imageSwitcher)的支持动画的图片浏览器

利用GridView和ImageSwitcher的基本用法 public class MainActivity extends Activity { int[] imageIds = new int[] {R.drawable.bomb5,R.drawable.bomb6,R.drawable.bomb7,R.drawable.bomb8, R.drawable.bomb9,R.drawable.bomb10,R.drawable.bomb11,R.drawable.bomb12, R.draw

Android基础——高级UI组件:图像视图和图片切换器

layout代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.

Android 自学之网格试图(GridView)和图片切换器(ImageSwitcher)功能和用法

网格试图(GridView)用于在界面上按行,列分布的方式来显示多个组件. GridView和ListView有共同的父类:AbsListView,因此GridView和ListView具有一定的相似性.GridView和ListView的主要区别在于:ListView只是一个方向上的分布:而GridView则会在两个方向上分布. 与ListView相似的是,GridView也需要通过Adapter来提供显示数据:可以通过SimpleAdapter来为GridView提供数据,也可以通过开发Ba

Android 高级UI设计笔记12:ImageSwitcher图片切换器

1. ImageSwitcher ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果...,颇有感觉啊.做相册一绝 2. 重要方法 setImageURI(Uri uri):设置图片地址 setImageResource(int resid):设置图片资源库 setImageDrawable(Drawable drawable):绘制图片 3. 设置动画效果 imageSwitcher.setInAnimation(AnimationUtils.loadAni

ImageSwitcher 图片切换器

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_he

图片切换器(ImageSwitcher)的功能与用法

ImageSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件时使用动画效果.ImageSwitcher继承了ViewSwitcher,并重写了ViewSwitcher的showNext().showPrevious()方法,因此ImageSwitcher使用起来更加简单.使用ImageSwitcher只要如下两步即可. 为ImageSwitcher提供一个ViewFactory,该ViewFactory生成的View组件必须是I

[Android] 给图像添加相框、圆形圆角显示图片、图像合成知识

    前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和添加水印,继续我的"随手拍"项目完成给图片添加相框.圆形圆角显示图片和图像合成的功能介绍.希望文章对大家有所帮助. 一. 打开图片和显示assets文件中图片 首先,对XML中activity_main.xml进行布局,通过使用RelativeLayout相对布局完成(XML代码后面附).然后,在Mainctivity.java中public class MainActivity e

[Android] 给图像加入相框、圆形圆角显示图片、图像合成知识

    前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和加入水印,继续我的"随手拍"项目完毕给图片加入相框.圆形圆角显示图片和图像合成的功能介绍.希望文章对大家有所帮助. 一. 打开图片和显示assets文件里图片 首先,对XML中activity_main.xml进行布局,通过使用RelativeLayout相对布局完毕(XML代码后面附).然后,在Mainctivity.java中public class MainActivity e