Переход с общим элементом

244
04 февраля 2020, 03:00

Цель сделать переход между окнами с общим элементом (изображением). Нужно из окна А перейти в окно 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. Может я что то делают не правильно или не до конца? что посоветуете?

READ ALSO
метод configure в Spring Security

метод configure в Spring Security

Есть конфиг в Spring Security:

238
closing inbound before receiving peer&#39;s close_notify в windows 10 при executeQuery() в Intelliji IDEA

closing inbound before receiving peer's close_notify в windows 10 при executeQuery() в Intelliji IDEA

Я пытаюсь создать выполнение запросов из SQL в Intelliji IDEA через JDBCПри выполнении запроса с компьютера на котором стоит Windows 8, запрос выполняется...

232
многопоточность и файлы в java

многопоточность и файлы в java

Я пытаюсь создать программу, потоки которой считывали бы и изменяли файлВсе это обернул в самописную семафору, которая контролирует доступ...

224
Не могу понять блок кода в реализации LinkedList

Не могу понять блок кода в реализации LinkedList

Дана реализация связанного списка:

252