版权声明:本文为博主原创文章,未经博主同意不得转载。

https://blog.csdn.net/gc_gongchao/article/details/25594669

今天继续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的更多相关文章

  1. AndroidUI组件之ActionBar

    有一段时间没有写博文了,发现自己的博文的完整度不是非常好.就拿AndroidUI组件这一块.一直没有更新完.我会尽快更新.好了.不多说了,今天来看一下ActionBar. 依照以往的作风.知识点都以代 ...

  2. AndroidUI组件之ActionBar--基于下拉的导航方式

      在上一篇关于ActionBar的博文中.我们知道了ActionBar是Android3.0的重要更新之中的一个.本篇博文就来写一个开发中经经常使用到的样例.用ActionBar提供基于下拉的导航方 ...

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

    图像视图:ImageView 继承view类,用于在屏幕上显示任何Drawable对象,通常用来显示图片: 这里的话我们介绍一些比较常用的属性: Path 1: android:adjustViewB ...

  4. AndroidUI组件之TabHost

    package com.gc.tabhost; /** * @author Android将军 * * * * 1.TabHost是一种非常有用的组件,TabHost能够非常方便地在窗体上放置 * 多 ...

  5. android-UI组件(四):AdapterView及其子类

    http://blog.csdn.net/litianpenghaha/article/details/23270881 AdapterView组件是一组重要的组件,AdapterView本身是一个抽 ...

  6. AndroidUI组件之AdapterViewFilpper

    package com.gc.adapterviewflipperdemo; /** * 功能:自己主动播放的图片库 * @author Android将军 */ /* * 1.AdapterView ...

  7. AndroidUI组件之ListView小技巧

    android:fadingEdge="none"//出去黑影  android:listSelector="@android:color/transparent&quo ...

  8. 第九章 Android-UI组件(2)

    一.图像视图(ImageView) 布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...

  9. 第七章 android-UI组件

    一.本章目录 二.用户界面概述 1,用户界面简介 (1)系统和用户之间进行信息交换的媒介 2,设计手机用户界面应解决的问题 (1)需要界面设计和逻辑代码完全分离(布局和逻辑代码分开放) (2)根据不同 ...

随机推荐

  1. Flexible and Economical UTF-8 Decoder

    http://bjoern.hoehrmann.de/utf-8/decoder/dfa/

  2. IOS 开发之 Method Swizzling

    ios 分类中如果增加的方法与被扩展的类方法名重复,则原方法就没法被调用….看以下例子 例如: @interface ClassA : NSObject - (NSString *) myMethod ...

  3. 双网卡环境导致Oracle连接异常

    现在就是流行向最高水平看齐,这次项目的部署,好好的SQL Server扔了(有正版授权的企业版,神啊...),逢人就夸:“俺们那上的可是最顶级的Oracle Database System!”.看了看 ...

  4. android 内存泄漏出现的情况

    非静态内部类的静态实例由于内部类默认持有外部类的引用,而静态实例属于类.所以,当外部类被销毁时,内部类仍然持有外部类的引用,致使外部类无法被GC回收.因此造成内存泄露. 类的静态变量持有大数据对象静态 ...

  5. 使用 ODP.NET 访问 Oracle(.net如何访问Oracle)详解【转】

    http://www.cnblogs.com/qinpengming/archive/2013/06/08/3127346.html 1,什么是ODF .NE,?就是Oracle 为 .NET (OD ...

  6. Android设计中的尺寸问题

    Android把屏幕大小分成四种:small, normal, large, xlarge; 屏幕密度分成:low(ldpi), medium(mdpi), high(hdpi), extra hig ...

  7. 利用 LeakCanary 来检查 Android 内存泄漏

    前言 你被概率性的 OOM 困扰么?有时候,OOM 像幽灵一样,挥之不去,可真想把它揪出来时,又捉之不着.或许,是时候用 LeakCanary 来诊断一下了.它是一个用来检查 Android 下内存泄 ...

  8. 可软件定义的存储逻辑——Efficient and agile storage management in software defined environments

            note:写这个或许算是翻译,又或算是对这个论文[1]的理解,又或者仅仅是我的看法.         这篇论文和IOFlow相比較,更加注重软件定义存储的框架(利用已有的框架来创建新的 ...

  9. Docker 三大核心工具

    Docker-machineDocker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox. Digital Oc ...

  10. android IntentService生命周期问题

    假设须要在onHandleIntent之前运行一些操作.比方须要停止当前正在运行的任务.可在onStart做这个操作. 须要注意的是必须在onStart函数的最后(运行完我的操作后)调用super.o ...