ImageSwitcher的使用
一、了解认识
1、 ImageSwitcher是一个图片切换器,它间接继承自FrameLayout类,ImageView相比,多了一个功能,那就是它说显示的图片切换时,可以设置动画效果,类似于淡进淡出效果,以及左进右出滑动等效果。
2、ImageSwitcher是用来显示图片的控件,AndroidAPI为我们提供了三种不同方法来设定不同的图像来源,方法有:
setImageDrawable(Drawable):指定一个Drawable对象,用来给ImageSwitcher显示。
setImageResource(int):指定一个资源的ID,用来给ImageSwitcher显示。
setImageURL(URL):指定一个URL地址,用来给ImageSwitcher显示URL指向的图片资源。
二、案例代码的实现
1、avtivity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageSwitcher
android:id="@+id/is_imageswitch"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
>
</ImageSwitcher>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginRight="16dp"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_last"
android:layout_width="100px"
android:layout_height="wrap_content"
android:gravity="bottom"
android:onClick="onClickLast"
android:text="上一张" />
<Button
android:id="@+id/btn_next"
android:layout_width="100px"
android:layout_height="wrap_content"
android:gravity="bottom"
android:onClick="onClickNext"
android:text="下一张" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
2、MainActivity.java
package com.example.ui5;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity {
private ImageSwitcher is_imageSwitcher;
//存放图片id的int数组
private int[] images={
R.drawable.p1,
R.drawable.p2,
R.drawable.p3,
R.drawable.p4,
R.drawable.p5,
};
private Button btn_next;
private Button btn_last;
private int index=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
is_imageSwitcher=(ImageSwitcher)findViewById(R.id.is_imageswitch);
btn_last=(Button)findViewById(R.id.btn_last);
btn_next=(Button)findViewById(R.id.btn_next);
is_imageSwitcher.setFactory(new ImageViewFactory(this));
is_imageSwitcher.setBackgroundResource(images[index]);
}
class ImageViewFactory implements ViewFactory
{
private Context context;
public ImageViewFactory(Context context)
{
this.context = context;
}
public View makeView() {
// TODO Auto-generated method stub
//定义每个图像的显示大小
ImageView iv = new ImageView(this.context);
iv.setLayoutParams(new ImageSwitcher.LayoutParams(300, 300));
return iv;
}
}
public void onClickLast(View v)
{
if(index>=0&&index<images.length-1)
{
index++;
is_imageSwitcher.setBackgroundResource(images[index]);
}else
{
index=images.length-1;
}
}
public void onClickNext(View v)
{
if(index>0&&index<images.length)
{
index--;
is_imageSwitcher.setBackgroundResource(images[index]);
}else
{
index=images.length-1;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
三、运行效果图