Gallery与ImageSwitcher总结

来源:互联网 发布:拾柒软件下载 编辑:程序博客网 时间:2024/06/06 00:01

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;        }    }}
  1. 构造适配器,本例选择BaseAdapter,(FIT_XY是将x,y轴拉伸,不保持比例)
  2. 加载适配器
  3. 重写makeView方法,返回一个imageView类型(FIT_CENTER保持图片比例拉伸)
  4. 监听器setOnItemSelectedListener

    imageSwitcher:

  5. activity继承ViewFactory 类
  6. imageSwitcher.setFactory(context)
  7. setInAnimation与setOutAnimation设置动画
  8. imageSwitcher.setBackgroundResource加载
0 0