• Android ImageSwitcher


    Overview

    ViewSwitcher that switches between two ImageViews when a new image is set on it. The views added to an ImageSwitcher must all be ImageViews.

    当一个新的视图被添加进来,视图控制器负责两个视图之间的切换,添加进ImageSwitcher,的视图必须是ImageViwe。

    常用方法

    • setFactory(ViewSwitcher.ViewFactory factory) 设置视图工厂必须要调用
    • setImageResource(int resId) 设置ImageSwitcher选中的照片,在切换图片时候使用

    关于ImageSwitcher的原理可以参考:泡在网上的日子

    一个 Demo

    用到的到的知识点

    • ImageSwither 的使用
    • Gallery 的使用
    • 简单的补间动画

    Note: 这里是指使用了Gallery的监听事件来控制ImageSwitcher图片的变化,没有添加ImageSwitcher手势操作。。。看来我真是太懒。

    public class HomeActivity extends AppCompatActivity implements ViewSwitcher.ViewFactory, AdapterView.OnItemSelectedListener {
    
        private Gallery gallery;    //画廊控件
        private List<Integer> drawableIdList;  //图片的集合
        private ImageSwitcher switcher; //图片切换器控件
    
    
        /**
         * 拿到我们想要的控件
         */
        private void initFindView() {
            switcher = (ImageSwitcher) this.findViewById(R.id.isImage);
            gallery = (Gallery) this.findViewById(R.id.gallery);
        }
    
        /**
         * 添加一些View
         */
        private void initData() {
            drawableIdList = new ArrayList<Integer>();
            drawableIdList.add(R.drawable.pet1);
            drawableIdList.add(R.drawable.pet2);
            drawableIdList.add(R.drawable.pet3);
            drawableIdList.add(R.drawable.pet4);
            drawableIdList.add(R.drawable.pet5);
            drawableIdList.add(R.drawable.pet6);
            drawableIdList.add(R.drawable.pet7);
            drawableIdList.add(R.drawable.pet8);
            drawableIdList.add(R.drawable.pet9);
    		//这个Adapter就是一个简单的Adapter用来生产图片
            GalleryImageAdapter adapter = new GalleryImageAdapter(this, this.drawableIdList);
            this.gallery.setAdapter(adapter);
        }
    
        /**
         * 初始化 ImageSwithcher
         */
        private void initSwitcher() {
            this.switcher.setFactory(this);
        }
    
        /**
         * 初始化简单的淡入淡出的动画.
         */
        private void initAnimation() {
            //图片进入时候的动画
            AlphaAnimation inAlphaAnimation = new AlphaAnimation(0.0f, 1.0f);
            inAlphaAnimation.setDuration(2000);
            //图片退出时候的动画
            AlphaAnimation outApphaAnimation = new AlphaAnimation(1.0f, 0f);
            outApphaAnimation.setDuration(2000);
    		//设置动画
            this.switcher.setInAnimation(inAlphaAnimation);
            this.switcher.setOutAnimation(outApphaAnimation);
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_home);
    
            switcher.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent motionEvent) {
                    return false;
                }
            });
    
            initFindView();
            initData();
            initSwitcher();
            initAnimation();
    
            this.gallery.setOnItemSelectedListener(this);
        }
    
        /**
         * 实现 ViewSwitcher.ViewFactory 接口的方法,此方法中只需要返回一个ImageView即可
         * note: 只能返回ImageView
         * */
        @Override
        public View makeView() {
            ImageView imageView = new ImageView(this);
            return imageView;
        }
    
        /**
         * Gallery 的Item的选中事件
         * */
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            //设置ImageSwitcher 显示的照片
            this.switcher.setImageResource(this.drawableIdList.get(i));
        }
        /**
         * 因为没有用到此事件所以空实现他
         * */
        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
            return;
        }
    }
    
    
  • 相关阅读:
    oracle spatial 类型
    感悟
    给年轻工程师的十大忠告
    美剧
    幸福人生讲座(一):不学礼,无以立
    人成长中须知道的20个故事
    孔子
    毕业五年决定你的一生
    sysindexes表中求SELECT COUNT(*)
    我们应该懂得
  • 原文地址:https://www.cnblogs.com/slyfox/p/7373938.html
Copyright © 2020-2023  润新知