Merge "Fixing issue where widget previews were being scaled up." into ics-mr1

This commit is contained in:
Winson Chung
2011-10-31 10:54:08 -07:00
committed by Android (Google) Code Review
5 changed files with 39 additions and 91 deletions
@@ -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>
+2 -1
View File
@@ -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>
+20
View File
@@ -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>
+2
View File
@@ -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 -->
@@ -949,18 +949,22 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
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 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
}
} 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);