2 つのアクティビティがあり、どちらにも画像が含まれています。Fresco を使用して 1 つのアクティビティで画像を読み込み、Picasso を使用して別のアクティビティで画像を読み込みます。私のコードの関連部分は次のとおりです。
最初の活動のイメージ
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/imageView102"
android:transitionName="image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="9dp"
android:layout_marginRight="9dp"
android:layout_marginTop="10dp"
fresco:actualImageScaleType="centerCrop"
fresco:placeholderImage="@color/wait_color"
fresco:placeholderImageScaleType="fitCenter"
fresco:viewAspectRatio="1.33"
android:layout_marginBottom="10dp" />
2 回目の活動のイメージ
<uk.co.senab.photoview.PhotoView
android:id="@+id/zoomable"
android:transitionName="image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />
2 番目のアクティビティで PhotoView を使用して、画像をズームインおよびズームアウトしています。
最初の活動
Uri uri = Uri.parse(photoUrl);
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.setProgressiveRenderingEnabled(true)
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(image.getController())
.build();
image.setController(controller);
image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ImageActivity.this, AlternateFullImageActivity.class);
intent.putExtra("ID", photoId);
intent.putExtra("photoUrl", photoUrl);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(ImageActivity.this, (View)image, "image");
startActivity(intent, options.toBundle());
}
else {
startActivity(intent);
}
}
});
第二の活動
Intent intent = getIntent();
photoId = intent.getExtras().getString("ID");
photoUrl = intent.getExtras().getString("photoUrl");
Picasso.with(AlternateFullImageActivity.this)
.load(photoUrl)
.into(image);
mAttacher = new PhotoViewAttacher(image);
問題は、移行がスムーズではなく、非常に高速であることです。ここで、トランジションを に変更する必要があることを読みましたChangeBounds
。トランジションをそれに変更するにはどうすればよいですか?また、このトランジションに 1000ms のように期間を追加するにはどうすればよいですか?