Merge "Place the work profile badge in the correct bottom right (left for RTL) location" into ub-launcher3-burnaby
This commit is contained in:
committed by
Android (Google) Code Review
commit
e3a1df20e6
@@ -118,4 +118,5 @@
|
||||
<!-- Sizes for managed profile badges -->
|
||||
<dimen name="profile_badge_size">24dp</dimen>
|
||||
<dimen name="profile_badge_margin">4dp</dimen>
|
||||
<dimen name="profile_badge_minimum_top">2dp</dimen>
|
||||
</resources>
|
||||
|
||||
@@ -444,7 +444,7 @@ public class WidgetPreviewLoader {
|
||||
} catch (Resources.NotFoundException e) { }
|
||||
c.setBitmap(null);
|
||||
}
|
||||
return mManager.getBadgeBitmap(info, preview);
|
||||
return mManager.getBadgeBitmap(info, preview, Math.min(preview.getHeight(), previewHeight));
|
||||
}
|
||||
|
||||
private Bitmap generateShortcutPreview(
|
||||
|
||||
@@ -78,6 +78,7 @@ public abstract class AppWidgetManagerCompat {
|
||||
|
||||
public abstract Drawable loadIcon(LauncherAppWidgetProviderInfo info, IconCache cache);
|
||||
|
||||
public abstract Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap);
|
||||
public abstract Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap,
|
||||
int imageHeight);
|
||||
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ class AppWidgetManagerCompatV16 extends AppWidgetManagerCompat {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap) {
|
||||
public Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap, int imageHeight) {
|
||||
return bitmap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ class AppWidgetManagerCompatVL extends AppWidgetManagerCompat {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap) {
|
||||
public Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap, int imageHeight) {
|
||||
if (info.isCustomWidget || info.getProfile().equals(android.os.Process.myUserHandle())) {
|
||||
return bitmap;
|
||||
}
|
||||
@@ -117,9 +117,10 @@ class AppWidgetManagerCompatVL extends AppWidgetManagerCompat {
|
||||
final Resources res = mContext.getResources();
|
||||
final int badgeSize = res.getDimensionPixelSize(R.dimen.profile_badge_size);
|
||||
final int badgeMargin = res.getDimensionPixelSize(R.dimen.profile_badge_margin);
|
||||
final int badgeMinTop = res.getDimensionPixelSize(R.dimen.profile_badge_minimum_top);
|
||||
final Rect badgeLocation = new Rect(0, 0, badgeSize, badgeSize);
|
||||
|
||||
final int top = bitmap.getHeight() - badgeSize - badgeMargin;
|
||||
final int top = Math.max(imageHeight - badgeSize - badgeMargin, badgeMinTop);
|
||||
if (res.getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
|
||||
badgeLocation.offset(badgeMargin, top);
|
||||
} else {
|
||||
|
||||
@@ -62,7 +62,7 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {
|
||||
private ImageView mWidgetImage;
|
||||
private TextView mWidgetName;
|
||||
private TextView mWidgetDims;
|
||||
private final Rect mOriginalImagePadding = new Rect();
|
||||
private final Rect mOrigImgPadding = new Rect();
|
||||
|
||||
private String mDimensionsFormatString;
|
||||
private boolean mIsAppWidget;
|
||||
@@ -102,10 +102,10 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {
|
||||
super.onFinishInflate();
|
||||
|
||||
mWidgetImage = (ImageView) findViewById(R.id.widget_preview);
|
||||
mOriginalImagePadding.left = mWidgetImage.getPaddingLeft();
|
||||
mOriginalImagePadding.top = mWidgetImage.getPaddingTop();
|
||||
mOriginalImagePadding.right = mWidgetImage.getPaddingRight();
|
||||
mOriginalImagePadding.bottom = mWidgetImage.getPaddingBottom();
|
||||
mOrigImgPadding.left = mWidgetImage.getPaddingLeft();
|
||||
mOrigImgPadding.top = mWidgetImage.getPaddingTop();
|
||||
mOrigImgPadding.right = mWidgetImage.getPaddingRight();
|
||||
mOrigImgPadding.bottom = mWidgetImage.getPaddingBottom();
|
||||
|
||||
mWidgetName = ((TextView) findViewById(R.id.widget_name));
|
||||
mWidgetDims = ((TextView) findViewById(R.id.widget_dims));
|
||||
@@ -164,6 +164,7 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {
|
||||
|
||||
public int[] getPreviewSize() {
|
||||
int[] maxSize = new int[2];
|
||||
|
||||
maxSize[0] = mPresetPreviewSize;
|
||||
maxSize[1] = mPresetPreviewSize;
|
||||
return maxSize;
|
||||
@@ -171,25 +172,21 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {
|
||||
|
||||
public void applyPreview(Bitmap bitmap) {
|
||||
FastBitmapDrawable preview = new FastBitmapDrawable(bitmap);
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, String.format("[tag=%s] applyPreview preview: %s",
|
||||
getTagToString(), preview));
|
||||
}
|
||||
|
||||
if (preview != null) {
|
||||
mWidgetImage.setImageDrawable(preview);
|
||||
|
||||
if (mIsAppWidget) {
|
||||
// center horizontally
|
||||
int[] imageSize = getPreviewSize();
|
||||
int centerAmount = (imageSize[0] - preview.getIntrinsicWidth()) / 2;
|
||||
mWidgetImage.setPadding(mOriginalImagePadding.left + centerAmount,
|
||||
mOriginalImagePadding.top,
|
||||
mOriginalImagePadding.right,
|
||||
mOriginalImagePadding.bottom);
|
||||
mWidgetImage.setPadding(mOrigImgPadding.left + centerAmount,
|
||||
mOrigImgPadding.top,
|
||||
mOrigImgPadding.right,
|
||||
mOrigImgPadding.bottom);
|
||||
}
|
||||
mWidgetImage.setAlpha(0f);
|
||||
mWidgetImage.animate().alpha(1.0f).setDuration(FADE_IN_DURATION_MS);
|
||||
// TODO(hyunyoungs): figure out why this has to be called explicitly.
|
||||
mWidgetImage.requestLayout();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,11 +199,6 @@ public class WidgetCell extends LinearLayout implements OnLayoutChangeListener {
|
||||
Log.d(TAG, String.format("[tag=%s] ensurePreview (%d, %d):",
|
||||
getTagToString(), size[0], size[1]));
|
||||
}
|
||||
|
||||
if (size[0] <= 0 || size[1] <= 0) {
|
||||
addOnLayoutChangeListener(this);
|
||||
return;
|
||||
}
|
||||
Bitmap[] immediateResult = new Bitmap[1];
|
||||
mActiveRequest = mWidgetPreviewLoader.getPreview(mInfo, size[0], size[1], this,
|
||||
immediateResult);
|
||||
|
||||
@@ -22,18 +22,11 @@ import android.util.AttributeSet;
|
||||
import android.widget.ImageView;
|
||||
|
||||
public class WidgetImageView extends ImageView {
|
||||
public boolean mAllowRequestLayout = true;
|
||||
|
||||
public WidgetImageView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public void requestLayout() {
|
||||
if (mAllowRequestLayout) {
|
||||
super.requestLayout();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
canvas.save();
|
||||
|
||||
@@ -151,8 +151,8 @@ public class WidgetsListAdapter extends Adapter<WidgetsRowViewHolder> {
|
||||
widget.setTag(pasi);
|
||||
widget.applyFromResolveInfo(mLauncher.getPackageManager(), info, mWidgetPreviewLoader);
|
||||
}
|
||||
widget.setVisibility(View.VISIBLE);
|
||||
widget.ensurePreview();
|
||||
widget.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user