AndroidUI组件之ImageSwitcher

今天继续AndroidUI组件的讲解(写博客只是为了巩固与继续学习知识----工欲善其事,必先利其器!)

下面是主Activity的源码,里面附含知识点的讲解,在前面的博客里已经说明,简单的知识点我会以代码注释的形式讲解,好了,不废话了:

package com.gc.imageswitcherdemo;
/*
 * 图像切换器(ImageSwitcher)的功能与用法
 *
 * 1、ImageSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征
 * :可以在切换View组件时使用动画效果。ImageSwitcher继承了ViewSwitcher并重写了
 * ViewSwitcher的showNext()、showPrevious()方法,因此ImageSwitcher使用起来
 * 更加简单。
 *2、 使用ImageSwitcher只要如下两步即可。
 * (1)为ImageSwitcher提供一个ViewFactory,该ViewFactory生成的View组件必须
 * 是ImageView
 * (2)需要切换图片时,只要调用ImageSwitcher的setImageDrawable(Drawable drawable)
 *      setImageResource(int resid)和setImageURI(Uri uri)方法更换图片即可
 * 3、ImageSwitcher与ImageView的功能有点相似,它们都可用于显示图片,区别在于ImageSwitcher
 * 的效果更炫,它可以指定图片切换时的动画效果。
 */
/**
**@author:Android将军
*/

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.GridView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity {

	int[] imageIds=new int[]{R.drawable.addresslist1,R.drawable.conference2,R.drawable.daiban3
			,R.drawable.email4,R.drawable.file5,R.drawable.infrom6,R.drawable.organization7,R.drawable.publicfile8
			,R.drawable.request9,R.drawable.sign10,R.drawable.task11,R.drawable.work12};
	private ImageSwitcher switcher;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//创建一个List对象,List对象的元素时Map
		List<Map<String,Object>> listItems=new ArrayList<Map<String,Object>>();
		for(int i=0;i<imageIds.length;i++)
		{
			Map<String,Object> listItem=new HashMap<String, Object>();
			listItem.put("image",imageIds[i]);
			listItems.add(listItem);
		}
		//获取显示图片的ImageSwitcher
		switcher=(ImageSwitcher)findViewById(R.id.switcher);
		//为ImageSwitcher设置图片切换的动画效果
		switcher.setFactory(new ViewFactory() {

			@Override
			public View makeView() {
				// 创建ImageView对象
				ImageView imageView=new ImageView(MainActivity.this);
				imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
				imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

				return imageView;
			}
		});
		//创建一个SimpleAdapter
		SimpleAdapter simpleAdapter=new SimpleAdapter(this,listItems,R.layout.cell,new String[]{"image"},new int[]{R.id.image1});
		GridView grid=(GridView)findViewById(R.id.grid01);
		//为GridView设置Adapter
		grid.setAdapter(simpleAdapter);
		//添加列表项被选中的监听器
		grid.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				//显示当前被选中的图片
				switcher.setImageResource(imageIds[position]);
			}

			@Override
			public void onNothingSelected(AdapterView<?> parent) {
				// TODO Auto-generated method stub

			}
		});
		//添加列表项被单击的监听器
		grid.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				//显示当前被选中的图片
				switcher.setImageResource(imageIds[position]);

			}
		});

	}

}

下面来看一下

activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
     >
     <!-- 定义一个GridView组件 -->
     <GridView
         android:id="@+id/grid01"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:horizontalSpacing="pt"
         android:verticalSpacing="2pt"
         android:numColumns="4"
         android:gravity="center"
         />

   <!-- 定义一个ImageSwitcher组件,inAnimation与outAnimation是切换图片时的动画效果,这里用的系统默认提供的一种动画 -->
   <ImageSwitcher
       android:id="@+id/switcher"
       android:layout_width="300dp"
       android:layout_height="300dp"
       android:layout_gravity="center_horizontal"
       android:inAnimation="@android:anim/slide_in_left"
       android:outAnimation="@android:anim/slide_out_right"
       />

</LinearLayout>

效果 截图:

转载请注明出处:http://blog.csdn.net/android_jiangjun/article/details/25594669

AndroidUI组件之ImageSwitcher,布布扣,bubuko.com

时间: 2024-10-13 22:06:04

AndroidUI组件之ImageSwitcher的相关文章

AndroidUI组件之TextSwitcher

package com.gc.textswitcherdemo; /* * 文本切换器(TextSwitcher): * 1.TextSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征 * 可以在切换View组件时使用动画效果.与ImageSwitcher相似的是,使用TextSwitcher * 也需要设置一个ViewFactory.与ImageSwitcher不同的是,TextSwitcher所需的 * ViewFactory的makeView()

AndroidUI组件之AdapterViewFilpper

package com.gc.adapterviewflipperdemo; /** * 功能:自动播放的图片库 * @author Android将军 */ /* * 1.AdapterViewFilpper继承了AdapterViewAnimator,它也会 * 显示Adapter提供的多个View组件,但它每次只能显示一个View组件 * ,程序可通过showPrevious()和showNext()方法控制该组件显示 * 上一个.下一个组件. * 2.AdapterViewFilpper

AndroidUI组件之AlertDialog

package com.gc.alertdialogdemo; /** * AlertDialog: * 1.AlertDialog的功能很强大,它可以生成各种内容的对话框,实际上AlertDialog生成的 * 的对话框总可以分为4个区域:(1)图标区(2)标题区(3)内容区(3)按钮区. * 2.创建一个对话框需要经过如下几个步骤: * (1)使用创建AlertDialog.Builder对象. * (2)调用AlertDialog.Builder的setTitle()或setCustomT

AndroidUI组件之ProgressBar

package com.gc.progressbar; /* * 1.ProgressBar组件也是一组重要的组件,ProgressBar本身代表了进度条组件, * 它还派生了两个常用的组件:SeekBar和RatingBar. * 2.进度条的功能与用法: * 进度条通常用于向用户显示某个耗时操作完成的百分比,进度条可以动态地显示进度 * 因此避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应. * Android支持如下几种风格的进度条,通过style属性可以为ProgressBar指

android-UI组件实例大全(六)------ImageView图像视图

图像视图:ImageView 继承view类,用于在屏幕上显示任何Drawable对象,通常用来显示图片: 这里的话我们介绍一些比较常用的属性: Path 1: android:adjustViewBounds:设置ImageView是否调整自己的边界来保持所显示图片的长宽比 !!!下面的这两个属性需要adjustViewBounds为ture,不然是不起作用的哦! android:maxHeight:设置ImageView的最大高度 android:maxWidth:设置ImageView的最

AndroidUI组件之ActionBar

有一段时间没有写博文了,发现自己的博文的完整度不是非常好.就拿AndroidUI组件这一块.一直没有更新完.我会尽快更新.好了.不多说了,今天来看一下ActionBar. 依照以往的作风.知识点都以代码凝视的形式在源码中. package com.gc.actionbardemo; /** * 1.活动条(ActionBar)是Android3.0的重要更新之中的一个. ActionBar位于传统标题栏的位置 * 也就是显示的屏幕的顶部.ActionBar可显示应用的图标和Activity标题-

AndroidUI组件之RoomButton

<!-- 知识点汇总: 1.Button与ImageButton的区别在于,Button生成的按钮上显示文字 而ImageButton上则显示图片.需要指出的是:为ImageButton按 钮指定 android:text属性没用(ImageButton的本质是ImageView),即使指定 了该属性,图片按钮上也不会显示任何文字 2.ImageButton 派生了一个ZoomButton ,ZoomButton可以代表"放大". "缩小"两个按钮.ZoomB

AndroidUI组件之GridView

java 代码如下(简单的知识点我会以注释的形式讲解): package com.gc.gridviewdemo; /** * @author Android将军 */ /** * 知识点讲解: * 1.GridView 用于在界面上按行.列分布的方式来显示多个组件. * GridView和ListView有共同的父类:AbsListView,因此GridView * 和ListView具有很高的相似性,它们都是列表项. * GridView与ListView的唯一区别在于:ListView只显

AndroidUI组件之TabHost

package com.gc.tabhost; /** * @author Android将军 * * * * 1.TabHost是一种非常实用的组件,TabHost可以很方便地在窗口上放置 * 多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组件 * 摆放区域.通过这种方式,就可以在一个容器里放置更多组件. * 2.与TabHost结合使用的还有如下组件: * TabWidget:代表选项卡的标签条. * TabSpec:代表选项卡的一个Tab页面. * 3.TabHost仅仅是一个