OSDN Git Service

Place the work profile badge in the correct bottom right (left for RTL)
authorHyunyoung Song <hyunyoungs@google.com>
Fri, 15 May 2015 00:08:45 +0000 (17:08 -0700)
committerHyunyoung Song <hyunyoungs@google.com>
Fri, 15 May 2015 00:08:45 +0000 (17:08 -0700)
location

Also:
- clean up of some code
- remove requestLayout() method call that is not needed.

b/20338602

Change-Id: I65e0e1ac40da2e3fa85af4d3aca54bed3f200a99

res/values/dimens.xml
src/com/android/launcher3/WidgetPreviewLoader.java
src/com/android/launcher3/compat/AppWidgetManagerCompat.java
src/com/android/launcher3/compat/AppWidgetManagerCompatV16.java
src/com/android/launcher3/compat/AppWidgetManagerCompatVL.java
src/com/android/launcher3/widget/WidgetCell.java
src/com/android/launcher3/widget/WidgetImageView.java
src/com/android/launcher3/widget/WidgetsListAdapter.java

index 1a92545..2661305 100644 (file)
 <!-- 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>
index 93bfeaf..fe09fb6 100644 (file)
@@ -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(
index e41a66f..7aa36d4 100644 (file)
@@ -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);
 
 }
index 967b53b..c244a47 100644 (file)
@@ -85,7 +85,7 @@ class AppWidgetManagerCompatV16 extends AppWidgetManagerCompat {
     }
 
     @Override
-    public Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap) {
+    public Bitmap getBadgeBitmap(LauncherAppWidgetProviderInfo info, Bitmap bitmap, int imageHeight) {
         return bitmap;
     }
 }
index 6c3e092..96ace84 100644 (file)
@@ -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 {
index 7ca4df9..aade85f 100644 (file)
@@ -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);
index 75167bc..f1eaf64 100644 (file)
@@ -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();
index d6e0628..639e0a2 100644 (file)
@@ -152,8 +152,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);
         }
     }