Merge "Place the work profile badge in the correct bottom right (left for RTL) location" into ub-launcher3-burnaby

This commit is contained in:
Hyunyoung Song
2015-05-15 00:09:49 +00:00
committed by Android (Google) Code Review
8 changed files with 21 additions and 33 deletions
+1
View File
@@ -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);
}
}