Gallery(画廊)已经过时了,但是不影响使用
本例是Gallery与ImageSwitcher结合使用案例
上代码先
public class GalleryActivity extends BaseActivity implements ViewSwitcher.ViewFactory {
//数据源
private int[] imageRes = new int[]{R.mipmap.a1, R.mipmap.a2, R.mipmap.a3,
R.mipmap.a4, R.mipmap.a5, R.mipmap.a6,
R.mipmap.a7, R.mipmap.a8, R.mipmap.a9,};
private Gallery gallery;
private ImageSwitcher imageSwitcher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gallery_layout);
gallery = (Gallery) findViewById(R.id.gallery);
//加载适配器
gallery.setAdapter(new MyAdapter(this, imageRes));
imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
imageSwitcher.setFactory(this);
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
imageSwitcher.setBackgroundResource(imageRes[position % imageRes.length]);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
@Override
public View makeView() {
ImageView iv = new ImageView(this);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
return iv;
}
//配置适配器
class MyAdapter extends BaseAdapter {
private Context context;
private int[] imageRes;
MyAdapter(Context context, int[] imageRes) {
this.context = context;
this.imageRes = imageRes;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;//近乎无限,保证能够循环播放
}
@Override
public Object getItem(int position) {
return imageRes[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(context);
//加载图片
imageView.setBackgroundResource(imageRes[position % imageRes.length]);//将图片循环播放
//设置大小
imageView.setLayoutParams(new Gallery.LayoutParams(200, 300));
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
return imageView;
}
}
}
- 构造适配器,本例选择BaseAdapter,(FIT_XY是将x,y轴拉伸,不保持比例)
- 加载适配器
- 重写makeView方法,返回一个imageView类型(FIT_CENTER保持图片比例拉伸)
监听器setOnItemSelectedListener
imageSwitcher:
- activity继承ViewFactory 类
- imageSwitcher.setFactory(context)
- setInAnimation与setOutAnimation设置动画
- imageSwitcher.setBackgroundResource加载