Merge "Replace RoundedCornerBitmap with outline clipping" into rvc-dev am: 5a7e06187d am: 9d4f06e16e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11893819

Change-Id: Ic91b6a8020c4fe73273b407eb1ffd0271d08a830
This commit is contained in:
Fabian Kozynski
2020-06-18 20:58:42 +00:00
committed by Automerger Merge Worker

View File

@@ -20,9 +20,8 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Outline;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
@@ -33,6 +32,7 @@ import android.media.session.MediaSession;
import android.media.session.PlaybackState;
import android.util.Log;
import android.view.View;
import android.view.ViewOutlineProvider;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -41,8 +41,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import androidx.constraintlayout.widget.ConstraintSet;
import androidx.core.graphics.drawable.RoundedBitmapDrawable;
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
import com.android.settingslib.Utils;
import com.android.settingslib.media.MediaOutputSliceConstants;
@@ -52,8 +50,6 @@ import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.util.animation.TransitionLayout;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.concurrent.Executor;
@@ -87,6 +83,8 @@ public class MediaControlPanel {
private int mBackgroundColor;
private int mAlbumArtSize;
private int mAlbumArtRadius;
// This will provide the corners for the album art.
private final ViewOutlineProvider mViewOutlineProvider;
/**
* Initialize a new control panel
@@ -104,6 +102,13 @@ public class MediaControlPanel {
mSeekBarViewModel = seekBarViewModel;
mMediaViewController = mediaViewController;
loadDimens();
mViewOutlineProvider = new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
outline.setRoundRect(0, 0, mAlbumArtSize, mAlbumArtSize, mAlbumArtRadius);
}
};
}
public void onDestroy() {
@@ -162,6 +167,11 @@ public class MediaControlPanel {
public void attach(PlayerViewHolder vh) {
mViewHolder = vh;
TransitionLayout player = vh.getPlayer();
ImageView albumView = vh.getAlbumView();
albumView.setOutlineProvider(mViewOutlineProvider);
albumView.setClipToOutline(true);
mSeekBarObserver = new SeekBarObserver(vh);
mSeekBarViewModel.getProgress().observeForever(mSeekBarObserver);
mSeekBarViewModel.attachTouchHandlers(vh.getSeekBar());
@@ -171,7 +181,7 @@ public class MediaControlPanel {
/**
* Bind this view based on the data given
*/
public void bind(@NotNull MediaData data) {
public void bind(@NonNull MediaData data) {
if (mViewHolder == null) {
return;
}
@@ -202,11 +212,9 @@ public class MediaControlPanel {
}
ImageView albumView = mViewHolder.getAlbumView();
// TODO: migrate this to a view with rounded corners instead of baking the rounding
// into the bitmap
boolean hasArtwork = data.getArtwork() != null;
if (hasArtwork) {
Drawable artwork = createRoundedBitmap(data.getArtwork());
Drawable artwork = scaleDrawable(data.getArtwork());
albumView.setImageDrawable(artwork);
}
setVisibleAndAlpha(collapsedSet, R.id.album_art, hasArtwork);
@@ -334,7 +342,7 @@ public class MediaControlPanel {
}
@UiThread
private Drawable createRoundedBitmap(Icon icon) {
private Drawable scaleDrawable(Icon icon) {
if (icon == null) {
return null;
}
@@ -355,14 +363,7 @@ public class MediaControlPanel {
bounds.offset((int) -offsetX,(int) -offsetY);
}
drawable.setBounds(bounds);
Bitmap scaled = Bitmap.createBitmap(mAlbumArtSize, mAlbumArtSize,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(scaled);
drawable.draw(canvas);
RoundedBitmapDrawable artwork = RoundedBitmapDrawableFactory.create(
mContext.getResources(), scaled);
artwork.setCornerRadius(mAlbumArtRadius);
return artwork;
return drawable;
}
/**