Android 共享元素转换不起作用,只有活动闪烁



我正在研究安卓共享元素转换。我尝试了下面的代码,只有第二个活动以眨眼打开。我在两个图像视图中都传递了相同的过渡名称,但仍然无法正常工作。

imageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
View imageView = findViewById(R.id.imageView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Intent intent = new Intent(StartActivity.this, EndActivity.class);
Pair<View, String> pair1 = Pair.create(imageView, imageView.getTransitionName());
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(StartActivity.this, pair1);
startActivity(intent, options.toBundle());
} else {
Intent intent = new Intent(StartActivity.this, EndActivity.class);
startActivity(intent);
}

}
});

您需要压缩图像并将其捆绑从一个活动传递到另一个活动。确保两个图像视图(在活动 A 和活动 B 中(具有相同的 android:transitionName。

在图像视图的 onClick 方法中的活动 A 中执行此操作:

Intent intent = new Intent(MainActivity.this, DetailActivity.class);
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(MainActivity.this,
imageView,
"trans");
imageView.buildDrawingCache();
Bitmap image = Bitmap.createScaledBitmap(imageView.getDrawingCache(), 300, 300, true);
Bundle extras = new Bundle();
extras.putParcelable("imagebitmap", image);
intent.putExtras(extras);
startActivity(intent, options.toBundle());

为图像视图指定过渡名称。在这里,我给出了android:transitionName = "trans"。

<ImageView
android:id="@+id/country_photo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:contentDescription="@string/action_settings"
android:transitionName="trans"
tools:ignore="UnusedAttribute"
/>

然后在活动 B 的 onCreate(( 方法中:

imageView = findViewById(R.id.iv_detail_image);
Bundle extras = getIntent().getExtras();
Bitmap bmp = (Bitmap) extras.getParcelable("imagebitmap");
imageView.setImageBitmap(bmp);

确保活动 B 中图像视图的 android:transitionName 属性相同。这意味着 android:transistionName 对于活动 B 中的图像视图应该是"trans"。

<ImageView
android:id="@+id/iv_detail_image"
android:transitionName="trans"
android:scaleType="fitCenter"
android:layout_width="match_parent"
tools:ignore="UnusedAttribute"
android:layout_height="380dp"
/>

最新更新