Support zoom for avatar preview.

This commit is contained in:
Sagar
2025-04-08 21:12:48 +05:30
committed by Michelle Tang
parent 8d8519b52e
commit 65e7c4c053
2 changed files with 14 additions and 6 deletions

View File

@@ -9,7 +9,6 @@ import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.transition.TransitionInflater; import android.transition.TransitionInflater;
import android.view.View; import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@@ -26,6 +25,7 @@ import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.bumptech.glide.request.transition.Transition; import com.bumptech.glide.request.transition.Transition;
import com.github.chrisbanes.photoview.PhotoView;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatar; import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatar;
@@ -46,6 +46,12 @@ public final class AvatarPreviewActivity extends PassphraseRequiredActivity {
private static final String RECIPIENT_ID_EXTRA = "recipient_id"; private static final String RECIPIENT_ID_EXTRA = "recipient_id";
private static final int ZOOM_TRANSITION_DURATION = 300;
private static final float ZOOM_LEVEL_MIN = 1.0f;
private static final float SMALL_IMAGES_ZOOM_LEVEL_MID = 3.0f;
private static final float SMALL_IMAGES_ZOOM_LEVEL_MAX = 8.0f;
public static @NonNull Intent intentFromRecipientId(@NonNull Context context, public static @NonNull Intent intentFromRecipientId(@NonNull Context context,
@NonNull RecipientId recipientId) @NonNull RecipientId recipientId)
{ {
@@ -78,7 +84,10 @@ public final class AvatarPreviewActivity extends PassphraseRequiredActivity {
Toolbar toolbar = findViewById(R.id.toolbar); Toolbar toolbar = findViewById(R.id.toolbar);
EmojiTextView title = findViewById(R.id.title); EmojiTextView title = findViewById(R.id.title);
ImageView avatar = findViewById(R.id.avatar); PhotoView avatar = findViewById(R.id.avatar);
avatar.setZoomTransitionDuration(ZOOM_TRANSITION_DURATION);
avatar.setScaleLevels(ZOOM_LEVEL_MIN, SMALL_IMAGES_ZOOM_LEVEL_MID, SMALL_IMAGES_ZOOM_LEVEL_MAX);
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
@@ -134,7 +143,7 @@ public final class AvatarPreviewActivity extends PassphraseRequiredActivity {
FullscreenHelper fullscreenHelper = new FullscreenHelper(this); FullscreenHelper fullscreenHelper = new FullscreenHelper(this);
findViewById(android.R.id.content).setOnClickListener(v -> fullscreenHelper.toggleUiVisibility()); avatar.setOnClickListener(v -> fullscreenHelper.toggleUiVisibility());
fullscreenHelper.configureToolbarLayout(findViewById(R.id.toolbar_cutout_spacer), toolbar); fullscreenHelper.configureToolbarLayout(findViewById(R.id.toolbar_cutout_spacer), toolbar);

View File

@@ -7,13 +7,12 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/core_grey_95"> android:background="@color/core_grey_95">
<ImageView <com.github.chrisbanes.photoview.PhotoView
android:id="@+id/avatar" android:id="@+id/avatar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:transitionName="avatar" android:transitionName="avatar"
tools:src="@tools:sample/avatars" /> tools:src="@tools:sample/avatars" />