GridView应用2(使用ImageSwitcher显示)

不多说,通过程序来演示...

注意:android:numColumns属性最好指定大于1,否则该属性默认值是1.这意味着只有一列,等同于ListView.

step1:新建android工程,命名为ImageSwitcherTest.

step2:设置配置文件

main.xml

main.xml
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6 
 7     <GridView
 8         android:id="@+id/gridview"
 9         android:layout_width="fill_parent"
10         android:layout_height="wrap_content"
11         android:numColumns="7" />
12 
13     <ImageSwitcher
14         android:id="@+id/imageswitcher"
15         android:layout_width="320dp"
16         android:layout_height="320dp"
17         android:layout_gravity="center_horizontal" />
18 
19 </LinearLayout>

main1.xml

main1.xml
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6 
 7     <ImageView
 8         android:id="@+id/imageview"
 9         android:layout_width="fill_parent"
10         android:layout_height="wrap_content" />
11 
12 </LinearLayout>

step3:主Activity程序..

ImageSwitcherTest.java
  1 package com.cb.imageswitcher;
  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.util.Log;
 11 import android.view.View;
 12 import android.view.ViewGroup.LayoutParams;
 13 import android.view.animation.AnimationUtils;
 14 import android.widget.AdapterView;
 15 import android.widget.AdapterView.OnItemClickListener;
 16 import android.widget.AdapterView.OnItemSelectedListener;
 17 import android.widget.GridView;
 18 import android.widget.ImageSwitcher;
 19 import android.widget.ImageView;
 20 import android.widget.SimpleAdapter;
 21 import android.widget.ViewSwitcher.ViewFactory;
 22 
 23 public class ImageSwitcherTest extends Activity {
 24     private GridView mGridView;
 25     private String TAG = "ImageSwitcherTest";
 26     private int[] images = { R.drawable.a, R.drawable.b, R.drawable.nash1,
 27             R.drawable.nash2, R.drawable.nash3, R.drawable.nash4,
 28             R.drawable.nash5 };// 加载图片
 29 
 30     @Override
 31     public void onCreate(Bundle savedInstanceState) {
 32         super.onCreate(savedInstanceState);
 33         setContentView(R.layout.main);
 34         Log.i(TAG, "onCreate()");
 35 
 36         mGridView = (GridView) findViewById(R.id.gridview);
 37 
 38         List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();// 存储数据
 39 
 40         for (int i = 0; i < images.length; i++) {
 41             Map<String, Object> listItem = new HashMap<String, Object>();
 42             listItem.put("images", images[i]);
 43             listItems.add(listItem);
 44         }
 45 
 46         /*
 47          * ImageSwitcher由FrameLayout派生而出,ImageSwitcher组件和ImageView很相似,它们都可用于显示图片,
 48          * 但ImageSwitcher比普通ImageView多一个功能:它所显示的图片切换时可以设置动画效果.
 49          */
 50         final ImageSwitcher switcher = (ImageSwitcher) findViewById(R.id.imageswitcher);
 51 
 52         // 设置图片更换的动画效果
 53         switcher.setInAnimation(AnimationUtils.loadAnimation(this,
 54                 android.R.anim.fade_in));
 55         switcher.setOutAnimation(AnimationUtils.loadAnimation(this,
 56                 android.R.anim.fade_out));
 57 
 58         switcher.setFactory(new ViewFactory() {
 59 
 60             @Override
 61             public View makeView() {
 62                 ImageView imageView = new ImageView(ImageSwitcherTest.this);
 63                 imageView.setBackgroundColor(0Xff0000);
 64                 imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
 65                 imageView.setLayoutParams(new ImageSwitcher.LayoutParams(
 66                         LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
 67 
 68                 return imageView; // ImageSwitcher负责显示返回的这个ImageView.
 69             }
 70         });
 71 
 72         SimpleAdapter adapter = new SimpleAdapter(this, listItems,
 73                 // 使用R.layout.main1作为布局文件.
 74                 R.layout.main1, new String[] { "images" },
 75                 new int[] { R.id.imageview });
 76 
 77         mGridView.setAdapter(adapter);
 78 
 79         // 添加列表项被选中的监听器
 80         mGridView.setOnItemSelectedListener(new OnItemSelectedListener() {
 81 
 82             @Override
 83             public void onItemSelected(AdapterView<?> parent, View view,
 84                     int position, long id) {
 85                 // 显示当前被选中的图片
 86                 switcher.setImageResource(images[position % images.length]);
 87             }
 88 
 89             @Override
 90             public void onNothingSelected(AdapterView<?> parent) {
 91             }
 92         });
 93 
 94         // 添加列表项被单击的监听器
 95         mGridView.setOnItemClickListener(new OnItemClickListener() {
 96 
 97             @Override
 98             public void onItemClick(AdapterView<?> parent, View view,
 99                     int position, long id) {
100                 switcher.setImageResource(images[position % images.length]);
101             }
102         });
103     }
104 }

step4:图示结果(点击上面的图片,在下面的ImageSwitcher中切换显示)

原文地址:https://www.cnblogs.com/chenbin7/p/2475100.html