import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;
import java.io.IOException;
import java.util.*;
import com.adapter.PicListAdapter;
import com.bean.*;
import com.util.PicUtil;
public class ImageSwitcherActivity extends Activity implements ViewFactory{
private ImageSwitcher imageSwitcher;
private Gallery gallery;
private List<PicBean> lspb;
private PicListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.imageswitcher_layout);
imageSwitcher=(ImageSwitcher) findViewById(R.id.is_imageSwitcher);
gallery=(Gallery) findViewById(R.id.is_gallery);
//给ImageeSwitcher设置视图工厂
imageSwitcher.setFactory(this);
lspb=new PicUtil().getdata(this);
adapter=new PicListAdapter(this, lspb);
gallery.setAdapter(adapter);
//给Gallery添加选项选中事件的监听
gallery.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
final PicBean pb=lspb.get(arg2);
try {
//获取位图对象
Bitmap bm=BitmapFactory.decodeStream(ImageSwitcherActivity.this.getAssets().open(pb.getPath()));
//创建位图桌面对象
BitmapDrawable drawable=new BitmapDrawable(bm);
imageSwitcher.setImageDrawable(drawable);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
@Override
public View makeView() {
ImageView iv=new ImageView(this);
//设置ImageView的等比例方法
iv.setScaleType(ImageView.ScaleType.FIT_XY);
//设置ImageView在ImageSwitcher中的位置,ImageView在ImageSwitcher中的宽和高于于ImageSwitcher相同
iv.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
return iv;
}
}
package com.util;
import android.content.Context;
import com.bean.*;
import java.io.IOException;
import java.util.*;
public class PicUtil {
public List<PicBean> getdata(Context context){
List<PicBean> lspic=new ArrayList<PicBean>();
try {
String[] fnames=context.getAssets().list("pic");
for (String fname : fnames) {
PicBean pb=new PicBean(fname, "pic/"+fname);
lspic.add(pb);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("lspic-->"+lspic.size());
return lspic;
}
}
package com.bean;
import java.io.Serializable;
public class PicBean implements Serializable{
private String fname;
private String path;
public PicBean() {
super();
// TODO Auto-generated constructor stub
}
public PicBean(String fname, String path) {
super();
this.fname = fname;
this.path = path;
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
package com.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import java.io.IOException;
import java.util.*;
import com.action.R;
import com.bean.*;
public class PicListAdapter extends BaseAdapter {
private Context context;
private List<PicBean> lspic;
private LayoutInflater layoutInflater;
public PicListAdapter(Context context, List<PicBean> lspic) {
super();
this.context = context;
this.lspic = lspic;
layoutInflater=LayoutInflater.from(context);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return lspic.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return lspic.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
}
private class ViewHolder{
public ImageView iv;
}
@Override
public View getView(int position, View convertView, ViewGroup root) {
ViewHolder vh=null;
if(convertView==null){
vh=new ViewHolder();
convertView=layoutInflater.inflate(R.layout.gallery_item_layout, null);
vh.iv=(ImageView) convertView.findViewById(R.id.gallery_item_iv);
convertView.setTag(vh);
}else{
vh=(ViewHolder) convertView.getTag();
}
PicBean pb=lspic.get(position);
try {
//获取位图对象,将其添加到ImageView上
Bitmap bm=BitmapFactory.decodeStream(context.getAssets().open(pb.getPath()));
vh.iv.setImageBitmap(bm);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return convertView;
}
}