Цель сделать переход между окнами с общим элементом (изображением). Нужно из окна А перейти в окно B с общим изображением (изображение ниже).
Activity A (переход через секунду):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setExitTransition(new Explode());
Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.ico_transition);
getWindow().setSharedElementEnterTransition(transition);
handler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(ActivityA.this , ActivityB.class);
ActivityOptions options = ActivityOptions.
makeSceneTransitionAnimation(ActivityA.this , new Pair<View, String>(image , IMAGE_ICO_NAME));
startActivity(intent , options.toBundle());
finish();
}
} , 1000);
}
else{
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(ActivityA.this , ActivityB.class));
finish();
}
} , 1000);
}
res/transition/ico_transition:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" android:duration="1000">
<changeImageTransform/>
</transitionSet>
Activity B:
private void initAnimation(){
ImageView image = (ImageView) findViewById(R.id.ico);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Transition transition = getWindow().getSharedElementEnterTransition();
ViewCompat.setTransitionName(image , StartActivity.IMAGE_ICO_NAME);
transition.addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
}
@Override
public void onTransitionEnd(Transition transition) {
}
@Override
public void onTransitionCancel(Transition transition) {
transition.removeListener(this);
}
@Override
public void onTransitionPause(Transition transition) {
}
@Override
public void onTransitionResume(Transition transition) {
}
});
}
}
Код как бы работает. Но работает не корректно. Встречаются такие проблемы как на фото 3. Может я что то делают не правильно или не до конца? что посоветуете?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей