我试图对Android的后退按钮进行编程,以便在按下时产生相反的滑动效果。
我有MainActivity(a),按下某些内容会创建另一个MainActivity(b)(并以编程方式设置不同的内容)。从MainActivity(a)到MainActivity(b)从正确(从左到右)滑入正确。
然而,当我点击后退按钮时,它应该从左侧滑入(向右滑动) - 即。相反 - 但效果与上述相同。我想让按下后面的动画带回前一个屏幕(从左边开始)
这是我的代码:
@Override
public void onIndexFragmentInteraction(final IndexesRecyclerViewAdapter.ViewHolder viewHolder) {
final Context thisContext = this;
YoYo.with(Techniques.Pulse).onEnd(new YoYo.AnimatorCallback() {
@Override
public void call(Animator animator) {
CelebritiesFragment celebritiesFragment = new CelebritiesFragment();
celebritiesFragment.setIndex(viewHolder.index);
CelebritiesTabViewsStack.getInstance().push(celebritiesFragment);
Intent intent = new Intent(thisContext, MainActivity.class);
startActivity(intent);
}
}).delay(0).duration(250).playOn(viewHolder.mView);
}
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(R.animator.slide_in_right, R.animator.slide_out_left);
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.animator.slide_out_left, R.animator.slide_out_right);
// no effect, even if I use overridePendingTransition(0, 0);
}
我猜问题是两者都是相同的MainActiity类。如何解决这个问题?
答案 0 :(得分:0)
我总是在onFinish
方法中使用这种动画:
public void finish() {
super.finish();
overridePendingTransition(R.animator.slide_out_left, R.animator.slide_out_right);
}
另外,看看overridePendingTransition
签名,它需要2个动画作为参数。
第一个用于传入活动的动画资源的资源ID。使用0表示没有动画。 最后一个是用于传出活动的动画资源的资源ID。使用0表示没有动画。
答案 1 :(得分:0)
经过多次实验,我自己找到了解决方案:
@Override
public void onIndexFragmentInteraction(final IndexesRecyclerViewAdapter.ViewHolder viewHolder) {
final Context thisContext = this;
YoYo.with(Techniques.Pulse).onEnd(new YoYo.AnimatorCallback() {
@Override
public void call(Animator animator) {
CelebritiesFragment celebritiesFragment = new CelebritiesFragment();
celebritiesFragment.setIndex(viewHolder.index);
CelebritiesTabViewsStack.getInstance().push(celebritiesFragment);
Intent intent = new Intent(thisContext, MainActivity.class);
//finish();
startActivity(intent);
overridePendingTransition(R.animator.slide_in_right, R.animator.slide_out_left);
}
}).delay(0).duration(250).playOn(viewHolder.mView);
}
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(0, R.animator.slide_out_right);
}