Android多媒体应用——ImageSwitcher

一、ImageSwitcher

FrameLayout
---->(间接继承)ImageSwitcher
有三个方法:1、setImageDrawable(Drawable);2、setImageResource(int);3、setImageURL(URL);

在XML中设定:
@android:anim/AnimName
常用效果
android:inAnimation:切入图片时的效果。
android:outAnimation:切出图片时的效果。

设置视图工厂:
ImageSwitcher直接继承自ViewSwitcher类。
ImageSwitcher通过setFactory()方法为它设置一个ViewSwitcher.ViewFactory接口。
设置这个ViewFactory接口时需要实现makeView()方法,该方法通常会返回一个ImageView。
makeView()为ImageSwitcher生成ImageView,为ViewSwitcher生成View。

 

public class Test1 extends AppCompatActivity {
    private Button btnAdd, btnSub;
    private ImageSwitcher imageSwitcher;
    private int index = 0;
    private List list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test1);
        putData();
        imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher1);
        btnAdd = (Button) findViewById(R.id.btnadd);
        btnSub = (Button) findViewById(R.id.btnSub);
        btnAdd.setOnClickListener(myClick);
        btnSub.setOnClickListener(myClick);

        //通过代码设定从左缓进,从右换出的效果。
        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(Test1.this, android.R.anim.slide_in_left));
        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(Test1.this, android.R.anim.slide_out_right));
        imageSwitcher.setFactory(new ViewFactory() {
            @Override
            public View makeView() {
                return new ImageView(Test1.this);
            }
        });
        imageSwitcher.setImageDrawable(list.get(0));
    }

    private View.OnClickListener myClick = new OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.btnadd:
                    index--;
                    if (index < 0) {
                        index = list.size() - 1;
                    }
                    imageSwitcher.setImageDrawable(list.get(index));
                    break;
                case R.id.btnSub:
                    index++;
                    if (index >= list.size()) {
                        index = 0;
                    }
                    imageSwitcher.setImageDrawable(list.get(index));
                    break;
            }
        }
    };

    private void putData() {
        //填充图片的Drawable资源数组
        list = new ArrayList<>();
        list.add(getResources().getDrawable(R.drawable.bmp1));
        list.add(getResources().getDrawable(R.drawable.bmp2));
        list.add(getResources().getDrawable(R.drawable.bmp3));
        list.add(getResources().getDrawable(R.drawable.bmp4));
        list.add(getResources().getDrawable(R.drawable.bmp5));
    }
}

 

你可能感兴趣的:(移动开发)