我正在使用像这样的共享元素开始一个带有场景转换的活动:
startActivity(new Intent(this, SecondActivity.class),
ActivityOptionsCompat.makeSceneTransitionAnimation(this, mImageView, "image_view_transition").toBundle());
我在android:transitionName="image_view_transition"
的布局中为ImageView指定了SecondActivity
,因此场景转换动画可以很好地与已启动的活动一起播放,而不需要做任何其他操作。
虽然在某些情况下,我不想播放从SecondActivity
回到开始活动的反向场景转换。如何从SecondActivity
内取消此动画?
答案 0 :(得分:1)
在SecondActivity
中,您可以为共享元素注册回调,并在需要时取消:
public class SecondActivity extends Activity {
...
@Override
public void onCreate(Bundle savedInstanceState) {
...
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
setEnterSharedElementCallback(new SharedElementCallback() {
@Override
public void onMapSharedElements(List<String> names, Map<String, View> sharedElements) {
Log.d(TAG, "onMapSharedElements()");
if (shouldCancelWindowTransitionOnExit) {
sharedElements.put("image_view_transition", null); // This will reject the transition
}
}
});
}
...
}
}
http://developer.android.com/reference/android/app/Activity.html#setEnterSharedElementCallback(android.app.SharedElementCallback) http://developer.android.com/reference/android/app/SharedElementCallback.html
答案 1 :(得分:0)
override fun onStart() {
super.onStart()
Handler().postDelayed(runnable,3000)
}
private val runnable:Runnable= Runnable (){
if(android.os.Build.VERSION.SDK_INT>=android.os.Build.VERSION_CODES.LOLLIPOP) {
imgLogo?.transitionName = null
}
}
上面的代码对我有用
答案 2 :(得分:-1)
在第二个java.nio.channels.FileChannel
中调用完成()之后尝试调用此方法。
Activity
no_change动画是:
overridePendingTransition(R.anim.no_change, R.anim.no_change);