Loading packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +20 −19 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 Loading @@ -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() { Loading Loading @@ -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()); Loading @@ -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; } Loading Loading @@ -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); Loading Loading @@ -334,7 +342,7 @@ public class MediaControlPanel { } @UiThread private Drawable createRoundedBitmap(Icon icon) { private Drawable scaleDrawable(Icon icon) { if (icon == null) { return null; } Loading @@ -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; } /** Loading Loading
packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +20 −19 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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 Loading @@ -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() { Loading Loading @@ -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()); Loading @@ -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; } Loading Loading @@ -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); Loading Loading @@ -334,7 +342,7 @@ public class MediaControlPanel { } @UiThread private Drawable createRoundedBitmap(Icon icon) { private Drawable scaleDrawable(Icon icon) { if (icon == null) { return null; } Loading @@ -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; } /** Loading