mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 12:38:33 +00:00
Support zoom for avatar preview.
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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" />
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user