【问题标题】:How to use transition animations in API 16?如何在 API 16 中使用过渡动画?
【发布时间】:2020-06-20 20:42:05
【问题描述】:

我写了以下代码:

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 年之间,所以我想也许有办法做到这一点。

【问题讨论】:

  • 我认为post 会帮助你
  • @Mutasim 嗨!谢谢您的回复。我看到了这篇文章并尝试编写 Youtube 视频中显示的代码。这真的很复杂和嵌套。它也是从 2014 年开始的,所以我想也许有更好的解决方案。

标签: java android


【解决方案1】:

这是不可能的,使用 API >21。你可以参考这里的官方文档https://developer.android.com/reference/android/app/ActivityOptions#makeSceneTransitionAnimation(android.app.Activity,%20android.view.View,%20java.lang.String)

我不确定,为什么您没有使用警告,但对于 getTransitionName 却有。不幸的是,早期版本不支持它。作为另一个参考,您可以查看https://www.programcreek.com/java-api-examples/?class=android.app.ActivityOptions&method=makeSceneTransitionAnimation 了解如何使用过渡动画的示例。

题外话

您可以通过编写自己的带有过渡动画的工具来实现您想要的动画。这不是那么容易,但它是纯视图实现,并且您不需要新的Android版本。出于同样的原因,您可以使用 Flutter(最低版本为 Android 16)并用几行代码制作过渡动画(英雄动画)。因为它是开箱即用的实现。

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多