merge in ics-mr1-release history after reset to ics-mr1
diff --git a/res/drawable-hdpi/homescreen_small_blue.9.png b/res/drawable-hdpi/flying_icon_bg_pressed.9.png
similarity index 100%
rename from res/drawable-hdpi/homescreen_small_blue.9.png
rename to res/drawable-hdpi/flying_icon_bg_pressed.9.png
Binary files differ
diff --git a/res/drawable-hdpi/homescreen_small_blue_strong.9.png b/res/drawable-hdpi/homescreen_small_blue_strong.9.png
deleted file mode 100644
index 6eab8f2..0000000
--- a/res/drawable-hdpi/homescreen_small_blue_strong.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/homescreen_small_blue.9.png b/res/drawable-mdpi/flying_icon_bg_pressed.9.png
similarity index 100%
rename from res/drawable-mdpi/homescreen_small_blue.9.png
rename to res/drawable-mdpi/flying_icon_bg_pressed.9.png
Binary files differ
diff --git a/res/drawable-mdpi/homescreen_small_blue_strong.9.png b/res/drawable-mdpi/homescreen_small_blue_strong.9.png
deleted file mode 100644
index 79d84a4..0000000
--- a/res/drawable-mdpi/homescreen_small_blue_strong.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/homescreen_small_blue.9.png b/res/drawable-xhdpi/flying_icon_bg_pressed.9.png
similarity index 100%
rename from res/drawable-xhdpi/homescreen_small_blue.9.png
rename to res/drawable-xhdpi/flying_icon_bg_pressed.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/homescreen_small_blue_strong.9.png b/res/drawable-xhdpi/homescreen_small_blue_strong.9.png
deleted file mode 100644
index 696d907..0000000
--- a/res/drawable-xhdpi/homescreen_small_blue_strong.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/flying_icon_bg.xml b/res/drawable/flying_icon_bg.xml
index 6f5bf0b..167c3ba 100644
--- a/res/drawable/flying_icon_bg.xml
+++ b/res/drawable/flying_icon_bg.xml
@@ -15,6 +15,6 @@
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true" android:drawable="@drawable/homescreen_small_blue" />
+ <item android:state_pressed="true" android:drawable="@drawable/flying_icon_bg_pressed" />
<item android:drawable="@android:color/transparent" />
</selector>
diff --git a/res/layout-sw720dp/apps_customize_widget.xml b/res/layout-sw720dp/apps_customize_widget.xml
deleted file mode 100644
index e707ef7..0000000
--- a/res/layout-sw720dp/apps_customize_widget.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<com.android.launcher2.PagedViewWidget
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
-
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:orientation="vertical"
-
- launcher:blurColor="#FF6B8CF0"
- launcher:outlineColor="#FF8CD2FF"
-
- android:background="@drawable/focusable_view_bg"
- android:focusable="true">
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="4dp"
- android:orientation="vertical">
- <!-- The name of the widget. -->
- <TextView xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/widget_name"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="0"
- android:gravity="left|bottom"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
-
- android:textColor="#FFBBBBBB"
- android:textSize="14sp"
- android:shadowColor="#FF000000"
- android:shadowDx="0.0"
- android:shadowDy="1.0"
- android:shadowRadius="1.0" />
-
- <!-- The original dimensions of the widget (can't be the same text as above due to different
- style. -->
- <TextView
- android:id="@+id/widget_dims"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="0"
- android:gravity="left|bottom"
-
- android:textColor="#FF999999"
- android:textSize="12sp"
- android:shadowColor="#99000000"
- android:shadowDx="0.0"
- android:shadowDy="1.0"
- android:shadowRadius="1.0" />
- </LinearLayout>
-
- <!-- The icon of the widget. -->
- <ImageView
- android:id="@+id/widget_preview"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:adjustViewBounds="true"
- android:scaleType="fitStart" />
-</com.android.launcher2.PagedViewWidget>
diff --git a/res/layout/apps_customize_widget.xml b/res/layout/apps_customize_widget.xml
index 2c11c1d..704401a 100644
--- a/res/layout/apps_customize_widget.xml
+++ b/res/layout/apps_customize_widget.xml
@@ -68,6 +68,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:padding="8dp"
+ android:paddingTop="@dimen/app_widget_preview_padding_top"
+ android:paddingLeft="@dimen/app_widget_preview_padding_left"
android:scaleType="matrix" />
</com.android.launcher2.PagedViewWidget>
diff --git a/res/values-sw720dp/dimens.xml b/res/values-sw720dp/dimens.xml
new file mode 100644
index 0000000..0373295
--- /dev/null
+++ b/res/values-sw720dp/dimens.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <dimen name="app_widget_preview_padding_left">0dp</dimen>
+ <dimen name="app_widget_preview_padding_top">10dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 124cf16..9ba77a9 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -108,6 +108,8 @@
<dimen name="app_widget_padding_right">16dp</dimen>
<dimen name="app_widget_padding_top">16dp</dimen>
<dimen name="app_widget_padding_bottom">16dp</dimen>
+ <dimen name="app_widget_preview_padding_left">8dp</dimen>
+ <dimen name="app_widget_preview_padding_top">8dp</dimen>
<!-- Folders -->
<!-- The size of the image which sits behind the preview of the folder contents -->
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 5a54c78..4d8a9cf 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -949,18 +949,22 @@
Log.w(LOG_TAG, "Can't load icon drawable 0x" + Integer.toHexString(info.icon)
+ " for provider: " + info.provider);
} else {
- // Scale down the preview to something that is closer to the cellWidth/Height
- int imageWidth = drawable.getIntrinsicWidth();
- int imageHeight = drawable.getIntrinsicHeight();
- int bitmapWidth = imageWidth;
- int bitmapHeight = imageHeight;
- if (imageWidth > imageHeight) {
- bitmapWidth = cellWidth;
- bitmapHeight = (int) (imageHeight * ((float) bitmapWidth / imageWidth));
+ // Map the target width/height to the cell dimensions
+ int targetWidth = mWidgetSpacingLayout.estimateCellWidth(cellHSpan);
+ int targetHeight = mWidgetSpacingLayout.estimateCellHeight(cellVSpan);
+ int targetCellWidth;
+ int targetCellHeight;
+ if (targetWidth >= targetHeight) {
+ targetCellWidth = Math.min(targetWidth, cellWidth);
+ targetCellHeight = (int) (cellHeight * ((float) targetCellWidth / cellWidth));
} else {
- bitmapHeight = cellHeight;
- bitmapWidth = (int) (imageWidth * ((float) bitmapHeight / imageHeight));
+ targetCellHeight = Math.min(targetHeight, cellHeight);
+ targetCellWidth = (int) (cellWidth * ((float) targetCellHeight / cellHeight));
}
+ // Map the preview to the target cell dimensions
+ int bitmapWidth = Math.min(targetCellWidth, drawable.getIntrinsicWidth());
+ int bitmapHeight = (int) (drawable.getIntrinsicHeight() *
+ ((float) bitmapWidth / drawable.getIntrinsicWidth()));
preview = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Config.ARGB_8888);
renderDrawableToBitmap(drawable, preview, 0, 0, bitmapWidth, bitmapHeight);
@@ -989,7 +993,7 @@
}
} else {
// Otherwise, ensure that we are properly sized within the cellWidth/Height
- if (targetWidth > targetHeight) {
+ if (targetWidth >= targetHeight) {
bitmapWidth = Math.min(targetWidth, cellWidth);
bitmapHeight = (int) (targetHeight * ((float) bitmapWidth / targetWidth));
iconScale = Math.min((float) bitmapHeight / (mAppIconSize + 2 * minOffset), 1f);
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 54fdcc5..9ffc1d0 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -96,12 +96,7 @@
private float mBackgroundAlphaMultiplier = 1.0f;
private Drawable mNormalBackground;
- private Drawable mActiveBackground;
private Drawable mActiveGlowBackground;
- private Drawable mNormalBackgroundMini;
- private Drawable mNormalGlowBackgroundMini;
- private Drawable mActiveBackgroundMini;
- private Drawable mActiveGlowBackgroundMini;
private Drawable mOverScrollForegroundDrawable;
private Drawable mOverScrollLeft;
private Drawable mOverScrollRight;
@@ -112,11 +107,8 @@
private float mGlowBackgroundAlpha;
private int mForegroundPadding;
- private boolean mAcceptsDrops = true;
// If we're actively dragging something over this screen, mIsDragOverlapping is true
private boolean mIsDragOverlapping = false;
- private boolean mIsDragOccuring = false;
- private boolean mIsDefaultDropTarget = false;
private final Point mDragCenter = new Point();
// These arrays are used to implement the drag visualization on x-large screens.
@@ -182,25 +174,15 @@
final Resources res = getResources();
mNormalBackground = res.getDrawable(R.drawable.homescreen_blue_normal_holo);
- mActiveBackground = res.getDrawable(R.drawable.homescreen_blue_strong_holo);
mActiveGlowBackground = res.getDrawable(R.drawable.homescreen_blue_strong_holo);
- mNormalBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue);
- mNormalGlowBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_strong);
- mActiveBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_strong);
- mActiveGlowBackgroundMini = res.getDrawable(R.drawable.homescreen_small_blue_strong);
mOverScrollLeft = res.getDrawable(R.drawable.overscroll_glow_left);
mOverScrollRight = res.getDrawable(R.drawable.overscroll_glow_right);
mForegroundPadding =
res.getDimensionPixelSize(R.dimen.workspace_overscroll_drawable_padding);
mNormalBackground.setFilterBitmap(true);
- mActiveBackground.setFilterBitmap(true);
mActiveGlowBackground.setFilterBitmap(true);
- mNormalBackgroundMini.setFilterBitmap(true);
- mNormalGlowBackgroundMini.setFilterBitmap(true);
- mActiveBackgroundMini.setFilterBitmap(true);
- mActiveGlowBackgroundMini.setFilterBitmap(true);
// Initialize the data structures used for the drag visualization.
@@ -358,20 +340,6 @@
return null;
}
- public void setIsDefaultDropTarget(boolean isDefaultDropTarget) {
- if (mIsDefaultDropTarget != isDefaultDropTarget) {
- mIsDefaultDropTarget = isDefaultDropTarget;
- invalidate();
- }
- }
-
- void setIsDragOccuring(boolean isDragOccuring) {
- if (mIsDragOccuring != isDragOccuring) {
- mIsDragOccuring = isDragOccuring;
- invalidate();
- }
- }
-
void setIsDragOverlapping(boolean isDragOverlapping) {
if (mIsDragOverlapping != isDragOverlapping) {
mIsDragOverlapping = isDragOverlapping;
@@ -454,47 +422,17 @@
// backgrounds
if (mBackgroundAlpha > 0.0f) {
Drawable bg;
- boolean mini = getScaleX() < 0.5f;
if (mIsDragOverlapping) {
// In the mini case, we draw the active_glow bg *over* the active background
- bg = mini ? mActiveBackgroundMini : mActiveGlowBackground;
- } else if (mIsDragOccuring && mAcceptsDrops) {
- bg = mini ? mActiveBackgroundMini : mActiveBackground;
- } else if (mIsDefaultDropTarget && mini) {
- bg = mNormalGlowBackgroundMini;
+ bg = mActiveGlowBackground;
} else {
- bg = mini ? mNormalBackgroundMini : mNormalBackground;
+ bg = mNormalBackground;
}
bg.setAlpha((int) (mBackgroundAlpha * mBackgroundAlphaMultiplier * 255));
bg.setBounds(mBackgroundRect);
bg.draw(canvas);
-
- if (mini && mIsDragOverlapping) {
- boolean modifiedClipRect = false;
- if (mGlowBackgroundScale > 1.0f) {
- // If the hover background's scale is greater than 1, we'll be drawing outside
- // the bounds of this CellLayout. Get around that by temporarily increasing the
- // size of the clip rect
- float marginFraction = (mGlowBackgroundScale - 1.0f) / 2.0f;
- Rect clipRect = canvas.getClipBounds();
- int marginX = (int) (marginFraction * (clipRect.right - clipRect.left));
- int marginY = (int) (marginFraction * (clipRect.bottom - clipRect.top));
- canvas.save(Canvas.CLIP_SAVE_FLAG);
- canvas.clipRect(-marginX, -marginY,
- getWidth() + marginX, getHeight() + marginY, Region.Op.REPLACE);
- modifiedClipRect = true;
- }
-
- mActiveGlowBackgroundMini.setAlpha(
- (int) (mBackgroundAlpha * mGlowBackgroundAlpha * 255));
- mActiveGlowBackgroundMini.setBounds(mGlowBackgroundRect);
- mActiveGlowBackgroundMini.draw(canvas);
- if (modifiedClipRect) {
- canvas.restore();
- }
- }
}
if (mCrosshairsVisibility > 0.0f) {
@@ -691,13 +629,6 @@
return false;
}
- public void setAcceptsDrops(boolean acceptsDrops) {
- if (mAcceptsDrops != acceptsDrops) {
- mAcceptsDrops = acceptsDrops;
- invalidate();
- }
- }
-
@Override
public void removeAllViews() {
clearOccupiedCells();
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 0c297dd..5daa05e 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -192,7 +192,6 @@
private Runnable mDelayedResizeRunnable;
private int mDisplayWidth;
private int mDisplayHeight;
- private boolean mIsStaticWallpaper;
private int mWallpaperTravelWidth;
// Variables relating to the creation of user folders by hovering shortcuts over shortcuts
@@ -639,7 +638,6 @@
protected void onPageBeginMoving() {
super.onPageBeginMoving();
- mIsStaticWallpaper = mWallpaperManager.getWallpaperInfo() == null;
if (isHardwareAccelerated()) {
updateChildrenLayersEnabled();
@@ -692,12 +690,6 @@
};
// As a ratio of screen height, the total distance we want the parallax effect to span
- // vertically
- private float wallpaperTravelToScreenHeightRatio(int width, int height) {
- return 1.1f;
- }
-
- // As a ratio of screen height, the total distance we want the parallax effect to span
// horizontally
private float wallpaperTravelToScreenWidthRatio(int width, int height) {
float aspectRatio = width / (float) height;
@@ -739,7 +731,7 @@
// parallax effects
if (LauncherApplication.isScreenLarge()) {
mWallpaperWidth = (int) (maxDim * wallpaperTravelToScreenWidthRatio(maxDim, minDim));
- mWallpaperHeight = (int)(maxDim * wallpaperTravelToScreenHeightRatio(maxDim, minDim));
+ mWallpaperHeight = maxDim;
} else {
mWallpaperWidth = Math.max((int) (minDim * WALLPAPER_SCREENS_SPAN), maxDim);
mWallpaperHeight = maxDim;
@@ -765,52 +757,31 @@
}
private float wallpaperOffsetForCurrentScroll() {
- final boolean overScrollWallpaper = LauncherApplication.isScreenLarge();
- final boolean isStaticWallpaper = mIsStaticWallpaper;
// The wallpaper travel width is how far, from left to right, the wallpaper will move
- // at this orientation (for example, in portrait mode we don't move all the way to the
- // edges of the wallpaper, or otherwise the parallax effect would be too strong)
- int wallpaperTravelWidth = mWallpaperTravelWidth;
- if (!overScrollWallpaper || !isStaticWallpaper) {
- wallpaperTravelWidth = mWallpaperWidth;
+ // at this orientation. On tablets in portrait mode we don't move all the way to the
+ // edges of the wallpaper, or otherwise the parallax effect would be too strong.
+ int wallpaperTravelWidth = mWallpaperWidth;
+ if (LauncherApplication.isScreenLarge()) {
+ wallpaperTravelWidth = mWallpaperTravelWidth;
}
// Set wallpaper offset steps (1 / (number of screens - 1))
- // We have 3 vertical offset states (centered, and then top/bottom aligned
- // for all apps/customize)
- if (LauncherApplication.isScreenLarge()) {
- mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 1.0f / (3 - 1));
- } else {
- mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 1.0f);
- }
+ mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 1.0f);
- // For the purposes of computing the scrollRange and overScrollOffset, we ignore
- // assume that mLayoutScale is 1. This means that when we're in spring-loaded mode,
+ // For the purposes of computing the scrollRange and overScrollOffset, we assume
+ // that mLayoutScale is 1. This means that when we're in spring-loaded mode,
// there's no discrepancy between the wallpaper offset for a given page.
float layoutScale = mLayoutScale;
mLayoutScale = 1f;
int scrollRange = getScrollRange();
- float scrollProgressOffset = 0;
-
- // Account for over scroll: you only see the absolute edge of the wallpaper if
- // you over scroll as far as you can in landscape mode. Only do this for static wallpapers
- // because live wallpapers (and probably 3rd party wallpaper providers) rely on the offset
- // being even intervals from 0 to 1 (eg [0, 0.25, 0.5, 0.75, 1])
- if (isStaticWallpaper && overScrollWallpaper) {
- int overScrollOffset = (int) (maxOverScroll() * mDisplayWidth);
- scrollProgressOffset += overScrollOffset / (float) getScrollRange();
- scrollRange += 2 * overScrollOffset;
- }
// Again, we adjust the wallpaper offset to be consistent between values of mLayoutScale
-
- float adjustedScrollX = overScrollWallpaper ?
- mScrollX : Math.max(0, Math.min(mScrollX, mMaxScrollX));
+ float adjustedScrollX = Math.max(0, Math.min(mScrollX, mMaxScrollX));
adjustedScrollX *= mWallpaperScrollRatio;
mLayoutScale = layoutScale;
float scrollProgress =
- adjustedScrollX / (float) scrollRange + scrollProgressOffset;
+ adjustedScrollX / (float) scrollRange;
float offsetInDips = wallpaperTravelWidth * scrollProgress +
(mWallpaperWidth - wallpaperTravelWidth) / 2; // center it
float offset = offsetInDips / (float) mWallpaperWidth;
@@ -889,8 +860,6 @@
float mVerticalCatchupConstant = 0.35f;
public WallpaperOffsetInterpolator() {
- mVerticalWallpaperOffset = LauncherApplication.isScreenLarge() ? 0.5f : 0f;
- mFinalVerticalWallpaperOffset = LauncherApplication.isScreenLarge() ? 0.5f : 0f;
}
public void setOverrideHorizontalCatchupConstant(boolean override) {
@@ -1525,6 +1494,9 @@
}
void changeState(final State state, boolean animated, int delay) {
+ if (mState == state) {
+ return;
+ }
if (mFirstLayout) {
// (mFirstLayout == "first layout has not happened yet")
// cancel any pending shrinks that were set earlier
@@ -2390,7 +2362,6 @@
// Show the current page outlines to indicate that we can accept this drop
showOutlines();
- layout.setIsDragOccuring(true);
layout.onDragEnter();
layout.visualizeDropLocation(null, mDragOutline, x, y, 1, 1, null, null);
@@ -2451,7 +2422,6 @@
}
case DragEvent.ACTION_DRAG_ENDED:
// Hide the page outlines after the drop
- layout.setIsDragOccuring(false);
layout.onDragExit();
hideOutlines();
return true;