我正在做一个图像查看器,通过单击右/左按钮将照片传递到下一个或上一个。
我想动画图片之间的过渡。我使用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。
答案 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);