Как использовать анимацию перехода в API 16? - PullRequest
5 голосов
/ 20 июня 2020

Я написал следующий код:

Glide.with(this).asBitmap().load(userImageURL).into(new CustomViewTarget<ImageView, Bitmap>(userAvatarImage) {

    @Override
    protected void onResourceCleared(@Nullable Drawable placeholder) {
        progressBarUserAvatar.setVisibility(View.GONE);
        userAvatarImage.setImageBitmap(null);
    }

    @Override
    public void onLoadFailed(@Nullable Drawable errorDrawable) {
        progressBarUserAvatar.setVisibility(View.GONE);
        final Bitmap circleLetterTile = tileProvider.getCircularLetterTile(userFullName);
        userAvatarImage.setImageBitmap(circleLetterTile);
    }

    @Override
    public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
        progressBarUserAvatar.setVisibility(View.GONE);
        final Bitmap circleAvatarBitmap = tileProvider.getCircularImage(resource);
        userAvatarImage.setImageBitmap(circleAvatarBitmap);

        userAvatarImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent showProfilePictureIntent = new Intent(UserProfileActivity.this, DisplayUserImageActivity.class);
                showProfilePictureIntent.putExtra("userImageURL",userImageURL);

                final String transitionName = ViewCompat.getTransitionName(userAvatarImage);
                ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
                        UserProfileActivity.this, userAvatarImage, transitionName);
                UserProfileActivity.this.startActivity(showProfilePictureIntent, options.toBundle());
                UserProfileActivity.this.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
            }
        });
    }
});

Он в основном отображает изображение пользователя с помощью Glide. Он также установил прослушиватель onClick, который открывает изображение в большом режиме с черным фоном. В настоящее время UserProfileActivity пуст (просто загружает макет). Проблема в том, что я не могу использовать getTransitionName, потому что это возможно только для api 21. Мне нужно использовать API 16 в моем проекте, поэтому это проблема. Каким будет самый простой способ добиться этого? Я изучил предыдущие темы, но все они были в период с 2013 по 2015 год, поэтому я подумал, может быть, есть способ сделать это.

1 Ответ

0 голосов
/ 24 июня 2020

Это невозможно сделать, используя API> 21. Как вы можете обратиться к официальной документации здесь https://developer.android.com/reference/android/app/ActivityOptions#makeSceneTransitionAnimation (android .app.Activity,% 20 android .view.View,% 20 java .lang.String) .

Я не уверен, почему у вас нет предупреждений, но есть для getTransitionName. К сожалению, в ранней версии это не поддерживается. В качестве еще одной ссылки вы можете проверить https://www.programcreek.com/java-api-examples/?class=android.app.ActivityOptions&method=makeSceneTransitionAnimation с примерами использования анимации перехода.

Off topi c

Вы можете добиться анимации вы хотите, написав собственные инструменты с анимацией перехода. Это не так просто, но это реализация в чистом виде, и вам не нужна новая версия Android. По той же причине вы можете использовать Flutter (минимальная версия для которого Android 16) и сделать анимацию перехода (анимацию героя) с помощью нескольких строк кода. Потому что это нестандартная реализация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...