设置动画ImageSwitcher将运行(in_left或out_right)

时间:2012-02-24 14:47:21

标签: android

我正在做一个图像查看器,通过单击右/左按钮将照片传递到下一个或上一个。

我想动画图片之间的过渡。我使用ImageSwitcher做到了,它正在工作,但我仍然有问题。

加载的动画总是相同的,总是向右滑动,如果我点击向右或向左按钮没有任何区别。

问题:如何设置单击按钮时将运行的动画?

我根据此博客完成了我的代码:http://saigeethamn.blogspot.com/2010/05/image-switcher-view-android-developer.html

代码中同样重要的部分:

// OnCreate()
in = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
out = AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right);

imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher1);
imageSwitcher.setFactory(this);
imageSwitcher.setInAnimation(in);
imageSwitcher.setOutAnimation(out);

现在点击事件(bm1和bm2是位图):

    private OnClickListener mClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (v.getId()==R.id.buttonRight) {
            Drawable d =new BitmapDrawable(getResources(),bm1);
            imageSwitcher.setImageDrawable(d);
        } else
        if (v.getId()==R.id.buttonLeft) {
            Drawable d =new BitmapDrawable(getResources(),bm2);
            imageSwitcher.setImageDrawable(d);
        }
    }
};

ImageSwitcher如何知道它将执行的女巫动画?如果是左或右?

从这里编辑-------------------------------------------- --------

解决方案:

private OnClickListener mClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (v.getId()==R.id.buttonRight) {
            imageSwitcher.setInAnimation(this, R.anim.slide_in_left); // added
            imageSwitcher.setOutAnimation(this, R.anim.slide_out_left); // added
            Drawable d =new BitmapDrawable(getResources(),bm1);
            imageSwitcher.setImageDrawable(d);
        } else
        if (v.getId()==R.id.buttonLeft) {
            imageSwitcher.setInAnimation(this, R.anim.slide_in_right); // added
            imageSwitcher.setOutAnimation(this, R.anim.slide_out_right); // added
            Drawable d =new BitmapDrawable(getResources(),bm2);
            imageSwitcher.setImageDrawable(d);
        }
    }
};

根据Rui Gaspar的回答。需要创建他展示的xmls。

1 个答案:

答案 0 :(得分:4)

您可以实现自己的动画

slide_in_left.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
               android:duration="350"/>
</set>

slide_in_right.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0" 
               android:duration="350"/>
</set>

slide_out_left.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-100%p" 
               android:duration="350"/>
</set>

slide_out_right.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p" 
               android:duration="350"/>
</set>

你可以像这样使用它:

//Switch Left
Intent myIntent = new Intent(m_context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);

//Switch Right  
Intent myIntent = new Intent(m_context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(myIntent);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_right);