* commit '6198cac6bee0ce4da2de9e762d33d1c534959d7c': Determine # of rows/columns based on screen size DO NOT MERGE
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
<?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.
|
||||
-->
|
||||
|
||||
<!-- The workspace contains 5 screens of cells -->
|
||||
<com.android.launcher2.Workspace
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
|
||||
android:paddingTop="?android:attr/actionBarSize"
|
||||
android:paddingBottom="10dp"
|
||||
launcher:defaultScreen="2"
|
||||
launcher:pageSpacing="@dimen/workspace_page_spacing_land">
|
||||
<include android:id="@+id/cell1" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell2" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell3" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell4" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell5" layout="@layout/workspace_screen" />
|
||||
</com.android.launcher2.Workspace>
|
||||
@@ -24,9 +24,10 @@
|
||||
|
||||
launcher:cellWidth="@dimen/workspace_cell_width"
|
||||
launcher:cellHeight="@dimen/workspace_cell_height"
|
||||
launcher:widthGap="@dimen/workspace_width_gap"
|
||||
launcher:heightGap="@dimen/workspace_height_gap"
|
||||
launcher:yAxisStartPadding="15dip"
|
||||
launcher:yAxisEndPadding="15dip"
|
||||
launcher:xAxisStartPadding="25dip"
|
||||
launcher:xAxisEndPadding="25dip" />
|
||||
launcher:widthGap="@dimen/workspace_width_gap_land"
|
||||
launcher:heightGap="@dimen/workspace_height_gap_land"
|
||||
|
||||
launcher:xAxisStartPadding="@dimen/workspace_x_axis_start_padding_land"
|
||||
launcher:xAxisEndPadding="@dimen/workspace_x_axis_end_padding_land"
|
||||
launcher:yAxisStartPadding="@dimen/workspace_y_axis_start_padding_land"
|
||||
launcher:yAxisEndPadding="@dimen/workspace_y_axis_end_padding_land" />
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?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.
|
||||
-->
|
||||
|
||||
<!-- The workspace contains 5 screens of cells -->
|
||||
<com.android.launcher2.Workspace
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
|
||||
android:paddingTop="?android:attr/actionBarSize"
|
||||
android:paddingBottom="10dp"
|
||||
launcher:defaultScreen="2"
|
||||
launcher:pageSpacing="@dimen/workspace_page_spacing_port">
|
||||
<include android:id="@+id/cell1" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell2" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell3" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell4" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell5" layout="@layout/workspace_screen" />
|
||||
</com.android.launcher2.Workspace>
|
||||
@@ -24,9 +24,10 @@
|
||||
|
||||
launcher:cellWidth="@dimen/workspace_cell_width"
|
||||
launcher:cellHeight="@dimen/workspace_cell_height"
|
||||
launcher:widthGap="@dimen/workspace_width_gap"
|
||||
launcher:heightGap="@dimen/workspace_height_gap"
|
||||
launcher:yAxisStartPadding="25dip"
|
||||
launcher:yAxisEndPadding="25dip"
|
||||
launcher:xAxisStartPadding="15dip"
|
||||
launcher:xAxisEndPadding="15dip"/>
|
||||
launcher:widthGap="@dimen/workspace_width_gap_port"
|
||||
launcher:heightGap="@dimen/workspace_height_gap_port"
|
||||
|
||||
launcher:xAxisStartPadding="@dimen/workspace_x_axis_start_padding_port"
|
||||
launcher:xAxisEndPadding="@dimen/workspace_x_axis_end_padding_port"
|
||||
launcher:yAxisStartPadding="@dimen/workspace_y_axis_start_padding_port"
|
||||
launcher:yAxisEndPadding="@dimen/workspace_y_axis_end_padding_port" />
|
||||
|
||||
@@ -22,31 +22,10 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<!-- The workspace contains 5 screens of cells -->
|
||||
<com.android.launcher2.Workspace
|
||||
<include layout="@layout/workspace"
|
||||
android:id="@+id/workspace"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="?android:attr/actionBarSize"
|
||||
android:paddingBottom="10dp"
|
||||
launcher:defaultScreen="2"
|
||||
launcher:cellCountX="8"
|
||||
launcher:cellCountY="7"
|
||||
launcher:pageSpacing="@dimen/workspace_page_spacing">
|
||||
|
||||
<include android:id="@+id/cell1" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell2" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell3" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell4" layout="@layout/workspace_screen" />
|
||||
<include android:id="@+id/cell5" layout="@layout/workspace_screen" />
|
||||
</com.android.launcher2.Workspace>
|
||||
|
||||
<include
|
||||
layout="@layout/all_apps_tabbed"
|
||||
android:id="@+id/all_apps_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="top" />
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<include layout="@layout/button_bar"
|
||||
android:id="@+id/all_apps_button_cluster"
|
||||
@@ -54,6 +33,12 @@
|
||||
android:layout_height="?android:attr/actionBarSize"
|
||||
android:layout_gravity="top" />
|
||||
|
||||
<include layout="@layout/all_apps_tabbed"
|
||||
android:id="@+id/all_apps_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="top" />
|
||||
|
||||
<include layout="@layout/customization_drawer"
|
||||
android:id="@+id/customization_drawer"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -19,12 +19,6 @@
|
||||
or right while you're dragging. -->
|
||||
<dimen name="scroll_zone">100dip</dimen>
|
||||
|
||||
<!-- Width/height gap overrides for the workspace -->
|
||||
<dimen name="workspace_width_gap">32dp</dimen>
|
||||
<dimen name="workspace_height_gap">2dp</dimen>
|
||||
|
||||
<dimen name="workspace_page_spacing">50dp</dimen>
|
||||
|
||||
<dimen name="customization_drawer_height">480dp</dimen>
|
||||
<dimen name="customization_drawer_content_height">420dp</dimen>
|
||||
|
||||
|
||||
@@ -19,12 +19,6 @@
|
||||
or right while you're dragging. -->
|
||||
<dimen name="scroll_zone">40dp</dimen>
|
||||
|
||||
<!-- Width/height gap overrides for the workspace -->
|
||||
<dimen name="workspace_width_gap">0dp</dimen>
|
||||
<dimen name="workspace_height_gap">32dp</dimen>
|
||||
|
||||
<dimen name="workspace_page_spacing">64dp</dimen>
|
||||
|
||||
<dimen name="customization_drawer_height">800dp</dimen>
|
||||
<dimen name="customization_drawer_content_height">420dp</dimen>
|
||||
|
||||
|
||||
@@ -18,9 +18,23 @@
|
||||
<dimen name="workspace_cell_width">96dip</dimen>
|
||||
<dimen name="workspace_cell_height">96dip</dimen>
|
||||
|
||||
<dimen name="workspace_x_axis_start_padding_land">25dip</dimen>
|
||||
<dimen name="workspace_x_axis_end_padding_land">25dip</dimen>
|
||||
<dimen name="workspace_y_axis_start_padding_land">15dip</dimen>
|
||||
<dimen name="workspace_y_axis_end_padding_land">15dip</dimen>
|
||||
<dimen name="workspace_x_axis_start_padding_port">15dip</dimen>
|
||||
<dimen name="workspace_x_axis_end_padding_port">15dip</dimen>
|
||||
<dimen name="workspace_y_axis_start_padding_port">25dip</dimen>
|
||||
<dimen name="workspace_y_axis_end_padding_port">25dip</dimen>
|
||||
|
||||
<!-- Width/height gap overrides for the workspace -->
|
||||
<dimen name="workspace_width_gap">0dp</dimen>
|
||||
<dimen name="workspace_height_gap">0dp</dimen>
|
||||
<dimen name="workspace_width_gap_land">32dp</dimen>
|
||||
<dimen name="workspace_height_gap_land">2dp</dimen>
|
||||
<dimen name="workspace_width_gap_port">0dp</dimen>
|
||||
<dimen name="workspace_height_gap_port">32dp</dimen>
|
||||
|
||||
<dimen name="workspace_page_spacing_land">50dp</dimen>
|
||||
<dimen name="workspace_page_spacing_port">64dp</dimen>
|
||||
|
||||
<!-- The corner radius to draw the external drop icon rounded rect -->
|
||||
<dimen name="external_drop_icon_rect_radius">10dp</dimen>
|
||||
@@ -44,6 +58,9 @@
|
||||
<dimen name="all_apps_button_drawable_padding">0dip</dimen>
|
||||
<dimen name="all_apps_button_vertical_padding">4dip</dimen>
|
||||
|
||||
<integer name="land_all_apps_view_cellCountX">7</integer>
|
||||
<integer name="land_all_apps_view_cellCountY">5</integer>
|
||||
|
||||
<dimen name="toolbar_button_vertical_padding">12dip</dimen>
|
||||
<dimen name="toolbar_button_horizontal_padding">16dip</dimen>
|
||||
|
||||
@@ -51,6 +68,9 @@
|
||||
<dimen name="delete_zone_vertical_drag_padding">20dip</dimen>
|
||||
<dimen name="delete_zone_horizontal_drag_padding">20dip</dimen>
|
||||
|
||||
<!-- roughly a status bar (for determining how many rows of icons are in home) -->
|
||||
<dimen name="status_bar_height">48dip</dimen>
|
||||
|
||||
<!-- dimensions for the wallpaper picker wallpaper thumbnail width -->
|
||||
<dimen name="wallpaper_chooser_grid_width">196dp</dimen>
|
||||
<dimen name="wallpaper_chooser_grid_height">140dp</dimen>
|
||||
|
||||
@@ -269,6 +269,60 @@ public class CellLayout extends ViewGroup {
|
||||
addView(mChildren);
|
||||
}
|
||||
|
||||
static int widthInPortrait(Resources r, int numCells) {
|
||||
// We use this method from Workspace to figure out how many rows/columns Launcher should
|
||||
// have. We ignore the left/right padding on CellLayout because it turns out in our design
|
||||
// the padding extends outside the visible screen size, but it looked fine anyway.
|
||||
// However, we make sure there's at least enough space for the crosshairs at either
|
||||
// edge to be rendered (half the crosshair is sticking out on either side)
|
||||
int cellWidth = r.getDimensionPixelSize(R.dimen.workspace_cell_width);
|
||||
int widthGap = r.getDimensionPixelSize(R.dimen.workspace_width_gap_port);
|
||||
int crosshairsSize = r.getDrawable(R.drawable.gardening_crosshairs).getIntrinsicWidth();
|
||||
|
||||
return widthGap * (numCells - 1) + cellWidth * numCells + crosshairsSize;
|
||||
}
|
||||
|
||||
static int widthInLandscape(Resources r, int numCells) {
|
||||
// We use this method from Workspace to figure out how many rows/columns Launcher should
|
||||
// have. We ignore the left/right padding on CellLayout because it turns out in our design
|
||||
// the padding extends outside the visible screen size, but it looked fine anyway.
|
||||
// However, we make sure there's at least enough space for the crosshairs at either
|
||||
// edge to be rendered (half the crosshair is sticking out on either side)
|
||||
int cellWidth = r.getDimensionPixelSize(R.dimen.workspace_cell_width);
|
||||
int widthGap = r.getDimensionPixelSize(R.dimen.workspace_width_gap_land);
|
||||
int crosshairsSize = r.getDrawable(R.drawable.gardening_crosshairs).getIntrinsicWidth();
|
||||
|
||||
return widthGap * (numCells - 1) + cellWidth * numCells + crosshairsSize;
|
||||
}
|
||||
|
||||
static int heightInPortrait(Resources r, int numCells) {
|
||||
// We use this method from Workspace to figure out how many rows/columns Launcher should
|
||||
// have. We ignore the left/right padding on CellLayout because it turns out in our design
|
||||
// the padding extends outside the visible screen size, but it looked fine anyway.
|
||||
// However, we make sure there's at least enough space for the crosshairs at the bottom
|
||||
// to be rendered (half the crosshair is sticking out); we don't worry about the top
|
||||
// crosshair since it can bleed into the action bar space
|
||||
int cellHeight = r.getDimensionPixelSize(R.dimen.workspace_cell_height);
|
||||
int heightGap = r.getDimensionPixelSize(R.dimen.workspace_height_gap_port);
|
||||
int crosshairsSize = r.getDrawable(R.drawable.gardening_crosshairs).getIntrinsicHeight();
|
||||
|
||||
return heightGap * (numCells - 1) + cellHeight * numCells + (crosshairsSize + 1) / 2;
|
||||
}
|
||||
|
||||
static int heightInLandscape(Resources r, int numCells) {
|
||||
// We use this method from Workspace to figure out how many rows/columns Launcher should
|
||||
// have. We ignore the left/right padding on CellLayout because it turns out in our design
|
||||
// the padding extends outside the visible screen size, but it looked fine anyway.
|
||||
// However, we make sure there's at least enough space for the crosshairs at the bottom
|
||||
// to be rendered (half the crosshair is sticking out); we don't worry about the top
|
||||
// crosshair since it can bleed into the action bar space
|
||||
int cellHeight = r.getDimensionPixelSize(R.dimen.workspace_cell_height);
|
||||
int heightGap = r.getDimensionPixelSize(R.dimen.workspace_height_gap_land);
|
||||
int crosshairsSize = r.getDrawable(R.drawable.gardening_crosshairs).getIntrinsicHeight();
|
||||
|
||||
return heightGap * (numCells - 1) + cellHeight * numCells + (crosshairsSize + 1) / 2;
|
||||
}
|
||||
|
||||
private void invalidateBubbleTextView(BubbleTextView icon) {
|
||||
final int padding = icon.getPressedOrFocusedBackgroundPadding();
|
||||
invalidate(icon.getLeft() - padding,
|
||||
|
||||
@@ -53,6 +53,7 @@ import android.net.Uri;
|
||||
import android.os.IBinder;
|
||||
import android.os.Parcelable;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
import android.util.Pair;
|
||||
import android.view.Display;
|
||||
@@ -255,10 +256,54 @@ public class Workspace extends SmoothPagedView
|
||||
|
||||
mWallpaperManager = WallpaperManager.getInstance(context);
|
||||
|
||||
int cellCountX = DEFAULT_CELL_COUNT_X;
|
||||
int cellCountY = DEFAULT_CELL_COUNT_Y;
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs,
|
||||
R.styleable.Workspace, defStyle, 0);
|
||||
int cellCountX = a.getInt(R.styleable.Workspace_cellCountX, DEFAULT_CELL_COUNT_X);
|
||||
int cellCountY = a.getInt(R.styleable.Workspace_cellCountY, DEFAULT_CELL_COUNT_Y);
|
||||
|
||||
if (LauncherApplication.isScreenXLarge()) {
|
||||
final Resources res = context.getResources();
|
||||
final DisplayMetrics dm = res.getDisplayMetrics();
|
||||
float widthDp = dm.widthPixels / dm.density;
|
||||
float heightDp = dm.heightPixels / dm.density;
|
||||
|
||||
final float statusBarHeight = res.getDimension(R.dimen.status_bar_height);
|
||||
TypedArray actionBarSizeTypedArray =
|
||||
context.obtainStyledAttributes(new int[] { android.R.attr.actionBarSize });
|
||||
float actionBarHeight = actionBarSizeTypedArray.getDimension(0, 0f);
|
||||
|
||||
if (heightDp > widthDp) {
|
||||
float temp = widthDp;
|
||||
widthDp = heightDp;
|
||||
heightDp = temp;
|
||||
}
|
||||
int cellCountXLand = 1;
|
||||
int cellCountXPort = 1;
|
||||
while (2*mPageSpacing + CellLayout.widthInLandscape(res, cellCountXLand + 1) <= widthDp) {
|
||||
cellCountXLand++;
|
||||
}
|
||||
while (CellLayout.widthInPortrait(res, cellCountXPort + 1) <= heightDp) {
|
||||
cellCountXPort++;
|
||||
}
|
||||
cellCountX = Math.min(cellCountXLand, cellCountXPort);
|
||||
|
||||
int cellCountYLand = 1;
|
||||
int cellCountYPort = 1;
|
||||
while (statusBarHeight + actionBarHeight +
|
||||
CellLayout.heightInLandscape(res, cellCountYLand + 1) <= heightDp) {
|
||||
cellCountYLand++;
|
||||
}
|
||||
while (statusBarHeight + actionBarHeight +
|
||||
CellLayout.heightInPortrait(res, cellCountYPort + 1) <= widthDp) {
|
||||
cellCountYPort++;
|
||||
}
|
||||
cellCountY = Math.min(cellCountYLand, cellCountYPort);
|
||||
}
|
||||
|
||||
// if the value is manually specified, use that instead
|
||||
cellCountX = a.getInt(R.styleable.Workspace_cellCountX, cellCountX);
|
||||
cellCountY = a.getInt(R.styleable.Workspace_cellCountY, cellCountY);
|
||||
mDefaultPage = a.getInt(R.styleable.Workspace_defaultScreen, 1);
|
||||
a.recycle();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user