diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 36fa4c190a..d4cd6a2bea 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -25,7 +25,7 @@
+ android:protectionLevel="signatureOrSystem" />
@@ -106,7 +106,7 @@
-
-
-
+ android:layout_height="match_parent"
+ android:paddingRight="20dp"
+ android:drawableLeft="@drawable/ic_actionbar_accept"
+ android:drawablePadding="8dp"
+ android:gravity="start|center_vertical"
+ android:text="@string/wallpaper_instructions">
+
diff --git a/WallpaperPicker/res/values/styles.xml b/WallpaperPicker/res/values/styles.xml
index 6d600bcdc0..16b11f279f 100644
--- a/WallpaperPicker/res/values/styles.xml
+++ b/WallpaperPicker/res/values/styles.xml
@@ -24,6 +24,12 @@
- true
+
+
+
+
diff --git a/WallpaperPicker/src/com/android/launcher3/AlphaDisableableButton.java b/WallpaperPicker/src/com/android/launcher3/AlphaDisableableButton.java
new file mode 100644
index 0000000000..f0796c36fa
--- /dev/null
+++ b/WallpaperPicker/src/com/android/launcher3/AlphaDisableableButton.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014 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
+ */
+
+package com.android.launcher3;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.widget.Button;
+
+/**
+ * A Button which becomes translucent when it is disabled
+ */
+public class AlphaDisableableButton extends Button {
+ public static float DISABLED_ALPHA_VALUE = 0.4f;
+ public AlphaDisableableButton(Context context) {
+ this(context, null);
+ }
+
+ public AlphaDisableableButton(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public AlphaDisableableButton(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ setLayerType(LAYER_TYPE_HARDWARE, null);
+ }
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ super.setEnabled(enabled);
+ if(enabled) {
+ setAlpha(1.0f);
+ } else {
+ setAlpha(DISABLED_ALPHA_VALUE);
+ }
+ }
+}
diff --git a/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java b/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java
index 60b253711b..88f4461bfa 100644
--- a/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java
+++ b/WallpaperPicker/src/com/android/launcher3/LiveWallpaperListAdapter.java
@@ -122,7 +122,7 @@ public class LiveWallpaperListAdapter extends BaseAdapter implements ListAdapter
Intent preview = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
preview.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
mInfo.getComponent());
- a.onLiveWallpaperPickerLaunch();
+ a.onLiveWallpaperPickerLaunch(mInfo);
a.startActivityForResultSafely(preview, WallpaperPickerActivity.PICK_LIVE_WALLPAPER);
}
}
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
index 23fbe73a32..561c4bb6a3 100644
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperCropActivity.java
@@ -75,7 +75,7 @@ public class WallpaperCropActivity extends Activity {
protected CropView mCropView;
protected Uri mUri;
- private View mSetWallpaperButton;
+ protected View mSetWallpaperButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -117,7 +117,7 @@ public class WallpaperCropActivity extends Activity {
// Load image in background
final BitmapRegionTileSource.UriBitmapSource bitmapSource =
new BitmapRegionTileSource.UriBitmapSource(this, imageUri, 1024);
- mSetWallpaperButton.setVisibility(View.INVISIBLE);
+ mSetWallpaperButton.setEnabled(false);
Runnable onLoad = new Runnable() {
public void run() {
if (bitmapSource.getLoadingState() != BitmapSource.State.LOADED) {
@@ -126,7 +126,7 @@ public class WallpaperCropActivity extends Activity {
Toast.LENGTH_LONG).show();
finish();
} else {
- mSetWallpaperButton.setVisibility(View.VISIBLE);
+ mSetWallpaperButton.setEnabled(true);
}
}
};
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
index aa43def66f..013606a50f 100644
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
@@ -16,7 +16,6 @@
package com.android.launcher3;
-import android.animation.Animator;
import android.animation.LayoutTransition;
import android.app.ActionBar;
import android.app.Activity;
@@ -33,7 +32,6 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
-import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PorterDuff;
import android.graphics.Rect;
@@ -60,6 +58,7 @@ import android.view.ViewGroup;
import android.view.ViewPropertyAnimator;
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
+import android.view.WindowManager;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.widget.BaseAdapter;
@@ -88,9 +87,9 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
private static final String SELECTED_INDEX = "SELECTED_INDEX";
private static final String OLD_DEFAULT_WALLPAPER_THUMBNAIL_FILENAME = "default_thumb.jpg";
private static final String DEFAULT_WALLPAPER_THUMBNAIL_FILENAME = "default_thumb2.jpg";
+ private static final int FLAG_POST_DELAY_MILLIS = 200;
private View mSelectedTile;
- private View mSetWallpaperButton;
private boolean mIgnoreNextTap;
private OnClickListener mThumbnailOnClickListener;
@@ -105,7 +104,8 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
ArrayList mTempWallpaperTiles = new ArrayList();
private SavedWallpaperImages mSavedImages;
private WallpaperInfo mLiveWallpaperInfoOnPickerLaunch;
- private int mSelectedIndex;
+ private int mSelectedIndex = -1;
+ private WallpaperInfo mLastClickedLiveWallpaperInfo;
public static abstract class WallpaperTileInfo {
protected View mView;
@@ -147,13 +147,13 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
onLoad = null;
} else {
mFirstClick = false;
- a.mSetWallpaperButton.setVisibility(View.INVISIBLE);
+ a.mSetWallpaperButton.setEnabled(false);
onLoad = new Runnable() {
public void run() {
if (mBitmapSource != null &&
mBitmapSource.getLoadingState() == BitmapSource.State.LOADED) {
a.selectTile(mView);
- a.mSetWallpaperButton.setVisibility(View.VISIBLE);
+ a.mSetWallpaperButton.setEnabled(true);
} else {
ViewGroup parent = (ViewGroup) mView.getParent();
if (parent != null) {
@@ -220,6 +220,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
wallpaperSize.x, wallpaperSize.y, false);
v.setScale(wallpaperSize.x / crop.width());
v.setTouchEnabled(false);
+ a.setSystemWallpaperVisiblity(false);
}
@Override
public void onSave(WallpaperPickerActivity a) {
@@ -248,15 +249,23 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
Drawable defaultWallpaper = WallpaperManager.getInstance(a).getBuiltInDrawable(
c.getWidth(), c.getHeight(), false, 0.5f, 0.5f);
+ if (defaultWallpaper == null) {
+ Log.w(TAG, "Null default wallpaper encountered.");
+ c.setTileSource(null, null);
+ return;
+ }
+
c.setTileSource(
new DrawableTileSource(a, defaultWallpaper, DrawableTileSource.MAX_PREVIEW_SIZE), null);
c.setScale(1f);
c.setTouchEnabled(false);
+ a.setSystemWallpaperVisiblity(false);
}
@Override
public void onSave(WallpaperPickerActivity a) {
try {
WallpaperManager.getInstance(a).clear();
+ a.setResult(RESULT_OK);
} catch (IOException e) {
Log.w("Setting wallpaper to default threw exception", e);
}
@@ -276,11 +285,70 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
mWallpaperStrip.setPadding(0, 0, 0, (int) offset);
}
+ /**
+ * shows the system wallpaper behind the window and hides the {@link
+ * #mCropView} if visible
+ * @param visible should the system wallpaper be shown
+ */
+ protected void setSystemWallpaperVisiblity(final boolean visible) {
+ // hide our own wallpaper preview if necessary
+ if(!visible) {
+ mCropView.setVisibility(View.VISIBLE);
+ } else {
+ changeWallpaperFlags(visible);
+ }
+ // the change of the flag must be delayed in order to avoid flickering,
+ // a simple post / double post does not suffice here
+ mCropView.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ if(!visible) {
+ changeWallpaperFlags(visible);
+ } else {
+ mCropView.setVisibility(View.INVISIBLE);
+ }
+ }
+ }, FLAG_POST_DELAY_MILLIS);
+ }
+
+ private void changeWallpaperFlags(boolean visible) {
+ int desiredWallpaperFlag = visible ? WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER : 0;
+ int currentWallpaperFlag = getWindow().getAttributes().flags
+ & WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
+ if (desiredWallpaperFlag != currentWallpaperFlag) {
+ getWindow().setFlags(desiredWallpaperFlag,
+ WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);
+ }
+ }
+
+ @Override
+ public void setCropViewTileSource(BitmapSource bitmapSource,
+ boolean touchEnabled,
+ boolean moveToLeft,
+ final Runnable postExecute) {
+ // we also want to show our own wallpaper instead of the one in the background
+ Runnable showPostExecuteRunnable = new Runnable() {
+ @Override
+ public void run() {
+ if(postExecute != null) {
+ postExecute.run();
+ }
+ setSystemWallpaperVisiblity(false);
+ }
+ };
+ super.setCropViewTileSource(bitmapSource,
+ touchEnabled,
+ moveToLeft,
+ showPostExecuteRunnable);
+ }
+
// called by onCreate; this is subclassed to overwrite WallpaperCropActivity
protected void init() {
setContentView(R.layout.wallpaper_picker);
mCropView = (CropView) findViewById(R.id.cropView);
+ mCropView.setVisibility(View.INVISIBLE);
+
mWallpaperStrip = findViewById(R.id.wallpaper_strip);
mCropView.setTouchCallback(new CropView.TouchCallback() {
ViewPropertyAnimator mAnim;
@@ -334,6 +402,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
}
return;
}
+ mSetWallpaperButton.setEnabled(true);
WallpaperTileInfo info = (WallpaperTileInfo) v.getTag();
if (info.isSelectable() && v.getVisibility() == View.VISIBLE) {
selectTile(v);
@@ -418,13 +487,15 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
// Add a tile for the default wallpaper
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
DefaultWallpaperInfo defaultWallpaperInfo = getDefaultWallpaper();
- FrameLayout defaultWallpaperTile = (FrameLayout) createImageTileView(
- getLayoutInflater(), 0, null, mWallpapersView, defaultWallpaperInfo.mThumb);
- setWallpaperItemPaddingToZero(defaultWallpaperTile);
- defaultWallpaperTile.setTag(defaultWallpaperInfo);
- mWallpapersView.addView(defaultWallpaperTile, 0);
- defaultWallpaperTile.setOnClickListener(mThumbnailOnClickListener);
- defaultWallpaperInfo.setView(defaultWallpaperTile);
+ if (defaultWallpaperInfo != null) {
+ FrameLayout defaultWallpaperTile = (FrameLayout) createImageTileView(
+ getLayoutInflater(), 0, null, mWallpapersView, defaultWallpaperInfo.mThumb);
+ setWallpaperItemPaddingToZero(defaultWallpaperTile);
+ defaultWallpaperTile.setTag(defaultWallpaperInfo);
+ mWallpapersView.addView(defaultWallpaperTile, 0);
+ defaultWallpaperTile.setOnClickListener(mThumbnailOnClickListener);
+ defaultWallpaperInfo.setView(defaultWallpaperTile);
+ }
}
// Select the first item; wait for a layout pass so that we initialize the dimensions of
@@ -437,6 +508,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
if (mSelectedIndex >= 0 && mSelectedIndex < mWallpapersView.getChildCount()) {
mThumbnailOnClickListener.onClick(
mWallpapersView.getChildAt(mSelectedIndex));
+ setSystemWallpaperVisiblity(false);
}
v.removeOnLayoutChangeListener(this);
}
@@ -466,6 +538,10 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
if (mSelectedTile != null) {
WallpaperTileInfo info = (WallpaperTileInfo) mSelectedTile.getTag();
info.onSave(WallpaperPickerActivity.this);
+ } else {
+ // no tile was selected, so we just finish the activity and go back
+ setResult(Activity.RESULT_OK);
+ finish();
}
}
});
@@ -516,6 +592,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
if (itemId == R.id.menu_delete) {
int childCount = mWallpapersView.getChildCount();
ArrayList viewsToRemove = new ArrayList();
+ boolean selectedTileRemoved = false;
for (int i = 0; i < childCount; i++) {
CheckableFrameLayout c =
(CheckableFrameLayout) mWallpapersView.getChildAt(i);
@@ -523,11 +600,19 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
WallpaperTileInfo info = (WallpaperTileInfo) c.getTag();
info.onDelete(WallpaperPickerActivity.this);
viewsToRemove.add(c);
+ if (i == mSelectedIndex) {
+ selectedTileRemoved = true;
+ }
}
}
for (View v : viewsToRemove) {
mWallpapersView.removeView(v);
}
+ if (selectedTileRemoved) {
+ mSelectedIndex = -1;
+ mSelectedTile = null;
+ setSystemWallpaperVisiblity(true);
+ }
updateTileIndices();
mode.finish(); // Action picked, so close the CAB
return true;
@@ -544,7 +629,9 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
CheckableFrameLayout c = (CheckableFrameLayout) mWallpapersView.getChildAt(i);
c.setChecked(false);
}
- mSelectedTile.setSelected(true);
+ if (mSelectedTile != null) {
+ mSelectedTile.setSelected(true);
+ }
mActionMode = null;
}
};
@@ -616,7 +703,7 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
for (Uri uri : uris) {
addTemporaryWallpaperTile(uri, true);
}
- mSelectedIndex = savedInstanceState.getInt(SELECTED_INDEX, 0);
+ mSelectedIndex = savedInstanceState.getInt(SELECTED_INDEX, -1);
}
private void populateWallpapersFromAdapter(ViewGroup parent, BaseAdapter adapter,
@@ -774,11 +861,15 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
} else if (requestCode == PICK_LIVE_WALLPAPER) {
WallpaperManager wm = WallpaperManager.getInstance(this);
final WallpaperInfo oldLiveWallpaper = mLiveWallpaperInfoOnPickerLaunch;
+ final WallpaperInfo clickedWallpaper = mLastClickedLiveWallpaperInfo;
WallpaperInfo newLiveWallpaper = wm.getWallpaperInfo();
// Try to figure out if a live wallpaper was set;
if (newLiveWallpaper != null &&
- (oldLiveWallpaper == null ||
- !oldLiveWallpaper.getComponent().equals(newLiveWallpaper.getComponent()))) {
+ (oldLiveWallpaper == null
+ || !oldLiveWallpaper.getComponent()
+ .equals(newLiveWallpaper.getComponent())
+ || clickedWallpaper.getComponent()
+ .equals(oldLiveWallpaper.getComponent()))) {
// Return if a live wallpaper was set
setResult(RESULT_OK);
finish();
@@ -938,7 +1029,8 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
return mSavedImages;
}
- public void onLiveWallpaperPickerLaunch() {
+ public void onLiveWallpaperPickerLaunch(WallpaperInfo info) {
+ mLastClickedLiveWallpaperInfo = info;
mLiveWallpaperInfoOnPickerLaunch = WallpaperManager.getInstance(this).getWallpaperInfo();
}
diff --git a/WallpaperPicker/src/com/android/photos/views/TiledImageView.java b/WallpaperPicker/src/com/android/photos/views/TiledImageView.java
index af4199c91e..94063b0277 100644
--- a/WallpaperPicker/src/com/android/photos/views/TiledImageView.java
+++ b/WallpaperPicker/src/com/android/photos/views/TiledImageView.java
@@ -112,6 +112,18 @@ public class TiledImageView extends FrameLayout {
//setTileSource(new ColoredTiles());
}
+ @Override
+ public void setVisibility(int visibility) {
+ super.setVisibility(visibility);
+ // need to update inner view's visibility because it seems like we're causing it to draw
+ // from {@link #dispatchDraw} or {@link #invalidate} even if we are invisible.
+ if (USE_TEXTURE_VIEW) {
+ mTextureView.setVisibility(visibility);
+ } else {
+ mGLSurfaceView.setVisibility(visibility);
+ }
+ }
+
public void destroy() {
if (!IS_SUPPORTED) {
return;
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 53b5b5a88c..b5c17c5d1d 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -104,10 +104,6 @@
"Vouer is gesluit"
"Vouer hernoem na %1$s"
"Vouer: %1$s"
-
-
-
-
"Legstukke"
"Muurpapiere"
"Instellings"
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index b0c862d144..ea64f6f3da 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -104,10 +104,6 @@
"አቃፊ ተዘግቷል"
"አቃፊ %1$s ተብሎ ዳግም ተሰይሟል"
"አቃፊ፦ %1$s"
-
-
-
-
"ፍርግሞች"
"የግድግዳ ወረቀቶች"
"ቅንብሮች"
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 98dce5fbda..7eb37d3e9f 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -104,10 +104,6 @@
"تم إغلاق المجلد"
"تمت إعادة تسمية المجلد إلى %1$s"
"المجلد: %1$s"
-
-
-
-
"الأدوات"
"الخلفيات"
"الإعدادات"
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 9082929d16..13c0118597 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -104,10 +104,6 @@
"Папката бе затворена"
"Папката е преименувана на „%1$s“"
"Папка: „%1$s“"
-
-
-
-
"Приспособления"
"Тапети"
"Настройки"
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 865d0e0ee7..3e6bedba93 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -104,10 +104,6 @@
"Carpeta tancada"
"S\'ha canviat el nom de la carpeta a %1$s"
"Carpeta: %1$s"
-
-
-
-
"Widgets"
"Fons de pantalla"
"Configuració"
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 0255709260..3a0e6721c7 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -104,10 +104,6 @@
"Složka je uzavřena"
"Složka přejmenována na %1$s"
"Složka: %1$s"
-
-
-
-
"Widgety"
"Tapety"
"Nastavení"
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 68ceb5bec2..7d4148950d 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -104,10 +104,6 @@
"Mappen er lukket"
"Mappen er omdøbt til %1$s"
"Mappe: %1$s"
-
-
-
-
"Widgets"
"Baggrunde"
"Indstillinger"
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 4bd04b208b..c11a651729 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -104,10 +104,6 @@
"Ordner geschlossen"
"Ordner umbenannt in %1$s"
"Ordner: %1$s"
-
-
-
-
"Widgets"
"Hintergründe"
"Einstellungen"
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index b6a9855e4b..ec05ae57c3 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -104,10 +104,6 @@
"Ο φάκελος έκλεισε"
"Ο φάκελος μετονομάστηκε σε %1$s"
"Φάκελος: %1$s"
-
-
-
-
"Γραφικά στοιχεία"
"Ταπετσαρίες"
"Ρυθμίσεις"
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 9f732e09d8..cab17077a5 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -104,10 +104,6 @@
"Folder closed"
"Folder renamed to %1$s"
"Folder: %1$s"
-
-
-
-
"Widgets"
"Wallpapers"
"Settings"
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 9f732e09d8..cab17077a5 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -104,10 +104,6 @@
"Folder closed"
"Folder renamed to %1$s"
"Folder: %1$s"
-
-
-
-
"Widgets"
"Wallpapers"
"Settings"
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 95e4a997bd..278f0d82f2 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -104,10 +104,6 @@
"Carpeta cerrada"
"El nombre de la carpeta se cambió a %1$s."
"Carpeta: %1$s"
-
-
-
-
"Widgets"
"Fondos de pantalla"
"Configuración"
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index e5beb909eb..f9cf809b20 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -104,10 +104,6 @@
"Carpeta cerrada"
"Se ha cambiado el nombre de la carpeta a %1$s"
"Carpeta: %1$s"
-
-
-
-
"Widgets"
"Fondos de pantalla"
"Ajustes"
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index a2f3125bb6..92985d2296 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -104,10 +104,6 @@
"Kaust on suletud"
"Kausta uus nimi: %1$s"
"Kaust: %1$s"
-
-
-
-
"Vidinad"
"Taustapildid"
"Seaded"
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 9f22f933d6..a01ea79325 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -104,10 +104,6 @@
"پوشه بسته شد"
"نام پوشه به %1$s تغییر کرد"
"پوشه: %1$s"
-
-
-
-
"ابزارکها"
"کاغذدیواریها"
"تنظیمات"
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index af461a5d29..9a48ab3596 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -104,10 +104,6 @@
"Kansio on suljettu"
"Kansion nimeksi vaihdettiin %1$s"
"Kansio: %1$s"
-
-
-
-
"Widgetit"
"Taustakuvat"
"Asetukset"
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 03343510c5..92c5cc4896 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -104,10 +104,6 @@
"Dossier fermé"
"Nouveau nom du dossier : %1$s"
"Dossier : %1$s"
-
-
-
-
"Widgets"
"Fonds d\'écran"
"Paramètres"
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 5f0607e1ab..18732f8499 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -104,10 +104,6 @@
"Dossier fermé"
"Nouveau nom du dossier : %1$s"
"Dossier \"%1$s\""
-
-
-
-
"Widgets"
"Fonds d\'écran"
"Paramètres"
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 058f5340ac..a5481a12d6 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -104,10 +104,6 @@
"फ़ोल्डर बंद किया गया"
"फ़ोल्डर का नाम बदलकर %1$s किया गया"
"फ़ोल्डर: %1$s"
-
-
-
-
"विजेट"
"वॉलपेपर"
"सेटिंग"
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 52a91a3e12..32f3feb2f2 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -104,10 +104,6 @@
"Mapa je zatvorena"
"Mapa je preimenovana u %1$s"
"Mapa: %1$s"
-
-
-
-
"Widgeti"
"Pozadinske slike"
"Postavke"
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 38b6b5c6d0..37d5059452 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -104,10 +104,6 @@
"Mappa lezárva"
"A mappa új neve: %1$s"
"Mappa: %1$s"
-
-
-
-
"Modulok"
"Háttérképek"
"Beállítások"
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 1faae76274..6e9491bcad 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -104,10 +104,6 @@
"Թղթապանակը փակ է"
"Թղթապանակը վերանվանվեց %1$s"
"Թղթապանակ՝ %1$s"
-
-
-
-
"Վիջեթներ"
"Պաստառներ"
"Կարգավորումներ"
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 732dd4574d..d5df63bfad 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -104,10 +104,6 @@
"Folder ditutup"
"Folder diganti namanya menjadi %1$s"
"Folder: %1$s"
-
-
-
-
"Widget"
"Wallpaper"
"Setelan"
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index f379ae7b1b..20451d135c 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -104,10 +104,6 @@
"Cartella chiusa"
"Nome della cartella sostituito con %1$s"
"Cartella: %1$s"
-
-
-
-
"Widget"
"Sfondi"
"Impostazioni"
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index af853a85b9..08d965399e 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -104,10 +104,6 @@
"התיקיה נסגרה"
"שם התיקיה שונה ל-%1$s"
"תיקיה: %1$s"
-
-
-
-
"רכיבי ווידג\'ט"
"טפטים"
"הגדרות"
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index b396893b1f..ad5e8ff703 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -104,10 +104,6 @@
"フォルダは閉じています"
"フォルダの名前を「%1$s」に変更しました"
"フォルダ: %1$s"
-
-
-
-
"ウィジェット"
"壁紙"
"設定"
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 4c53cc81e9..086df7222f 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -104,10 +104,6 @@
"საქაღალდე დაიხურა"
"საქაღალდეს შეეცვალა სახელი „%1$s“-ად"
"საქაღალდე: %1$s"
-
-
-
-
"ვიჯეტები"
"ფონები"
"პარამეტრები"
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index eb30a16da7..bf2f01c01e 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -104,10 +104,6 @@
"បានបិទថត"
"បានប្ដូរឈ្មោះថតជា %1$s"
"ថត៖ %1$s"
-
-
-
-
"ធាតុក្រាហ្វិក"
"ផ្ទាំងរូបភាព"
"ការកំណត់"
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 656c9728a9..dde4eb7819 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -104,10 +104,6 @@
"폴더 닫음"
"폴더 이름 변경: %1$s"
"폴더: %1$s"
-
-
-
-
"위젯"
"배경화면"
"설정"
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 5ced01ab02..092098b94e 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -104,10 +104,6 @@
"ປິດໂຟນເດີແລ້ວ"
"ປ່ຽນຊື່ໂຟນເດີເປັນ %1$s ແລ້ວ"
"ໂຟນເດີ: %1$s"
-
-
-
-
"ວິດເຈັດ"
"ພາບພື້ນຫຼັງ"
"ການຕັ້ງຄ່າ"
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index aed0e84d5e..aba231d859 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -104,10 +104,6 @@
"Aplankas uždarytas"
"Aplankas pervardytas kaip „%1$s“"
"Aplankas: „%1$s“"
-
-
-
-
"Valdikliai"
"Ekrano fonai"
"Nustatymai"
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 74ae7a4657..6d4888d8c6 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -104,10 +104,6 @@
"Mape aizvērta"
"Mape pārdēvēta par: %1$s"
"Mape: %1$s"
-
-
-
-
"Logrīki"
"Fona tapetes"
"Iestatījumi"
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 0430ac5b3b..db92a5c81d 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -104,10 +104,6 @@
"Фолдер хаагдав"
"Фолдерын нэр %1$s болов"
"Фолдер: %1$s"
-
-
-
-
"Виджет"
"Ханын зураг"
"Тохиргоо"
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index 802aa952dc..678eeb46a3 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -104,10 +104,6 @@
"Folder ditutup"
"Folder dinamakan semula kepada %1$s"
"Folder: %1$s"
-
-
-
-
"Widget"
"Kertas dinding"
"Tetapan"
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 0e163753aa..dd89a4f600 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -104,10 +104,6 @@
"Mappen ble lukket"
"Mappen heter nå %1$s"
"Mappe: %1$s"
-
-
-
-
"Moduler"
"Bakgrunner"
"Innstillinger"
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index f6c1b09c95..d39c1ea113 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -104,10 +104,6 @@
"Map gesloten"
"De naam van de map is gewijzigd in %1$s"
"Map: %1$s"
-
-
-
-
"Widgets"
"Achtergronden"
"Instellingen"
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 5a2efbfbc6..b428a95ca6 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -104,10 +104,6 @@
"Folder zamknięty"
"Nazwa folderu zmieniona na %1$s"
"Folder: %1$s"
-
-
-
-
"Widżety"
"Tapety"
"Ustawienia"
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index c6f5710414..b8e51d6d20 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -104,10 +104,6 @@
"Pasta fechada"
"Nome de pasta alterado para %1$s"
"Pasta: %1$s"
-
-
-
-
"Widgets"
"Imagens de fundo"
"Definições"
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 0252d61c30..03c621af27 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -104,10 +104,6 @@
"Pasta fechada"
"Pasta renomeada para %1$s"
"Pasta: %1$s"
-
-
-
-
"Widgets"
"Planos de fundo"
"Configurações"
diff --git a/res/values-rm/strings.xml b/res/values-rm/strings.xml
index 8563d7da40..36000956fc 100644
--- a/res/values-rm/strings.xml
+++ b/res/values-rm/strings.xml
@@ -186,10 +186,6 @@
-
-
-
-
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 75479ed577..a667ffdc5a 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -104,10 +104,6 @@
"Dosar închis"
"Dosar redenumit %1$s"
"Dosar: %1$s"
-
-
-
-
"Widgeturi"
"Imagini de fundal"
"Setări"
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index a93583db41..c2e8bc718e 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -104,10 +104,6 @@
"Папка закрыта"
"Папка переименована в \"%1$s\""
"Папка: %1$s"
-
-
-
-
"Виджеты"
"Обои"
"Настройки"
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 485a2ec4fa..acd8e051c7 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -104,10 +104,6 @@
"Priečinok je uzavretý"
"Priečinok bol premenovaný na %1$s"
"Priečinok: %1$s"
-
-
-
-
"Miniaplikácie"
"Tapety"
"Nastavenia"
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index dfd63e2c0f..afbd6202e7 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -104,10 +104,6 @@
"Mapa je zaprta"
"Mapa je preimenovana v %1$s"
"Mapa: %1$s"
-
-
-
-
"Pripomočki"
"Ozadja"
"Nastavitve"
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index dd28fa3b98..bf71b2821b 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -104,10 +104,6 @@
"Директоријум је затворен"
"Директоријум је преименован у %1$s"
"Директоријум: %1$s"
-
-
-
-
"Виџети"
"Позадине"
"Подешавања"
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 4005b7e6ea..5825eecbde 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -104,10 +104,6 @@
"Mappen är stängd"
"Mappen har bytt namn till %1$s"
"Mapp: %1$s"
-
-
-
-
"Widgetar"
"Bakgrunder"
"Inställningar"
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 4397d3bae5..37d0708928 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -106,10 +106,6 @@
"Folda imefungwa"
"Folda imebadilishwa jina kuwa %1$s"
"Folda: %1$s"
-
-
-
-
"Wijeti"
"Mandhari"
"Mipangilio"
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 413c78af6b..87e82371fa 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -104,10 +104,6 @@
"โฟลเดอร์ปิดอยู่"
"เปลี่ยนชื่อโฟลเดอร์เป็น %1$s"
"โฟลเดอร์: %1$s"
-
-
-
-
"วิดเจ็ต"
"วอลเปเปอร์"
"การตั้งค่า"
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 897631a7c2..5be9d85a8c 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -104,10 +104,6 @@
"Nakasara ang folder"
"Pinalitan ang pangalan ng folder ng %1$s"
"Folder: %1$s"
-
-
-
-
"Mga Widget"
"Mga Wallpaper"
"Mga Setting"
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 42fa17242a..01f79a2e58 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -104,10 +104,6 @@
"Klasör kapatıldı"
"Klasörün adı %1$s olarak değiştirildi"
"Klasör: %1$s"
-
-
-
-
"Widget\'lar"
"Duvar Kağıtları"
"Ayarlar"
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 7cef32139f..f266eeab56 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -104,10 +104,6 @@
"Папку закрито"
"Папку перейменовано на %1$s"
"Папка %1$s"
-
-
-
-
"Віджети"
"Фонові малюнки"
"Налаштування"
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 20a9b3a62e..9d4ed413c0 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -104,10 +104,6 @@
"Đã đóng thư mục"
"Đã đổi tên thư mục thành %1$s"
"Thư mục: %1$s"
-
-
-
-
"Tiện ích con"
"Hình nền"
"Cài đặt"
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 540291e0fb..3a2638e34b 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -104,10 +104,6 @@
"文件夹已关闭"
"已将文件夹重命名为“%1$s”"
"文件夹:%1$s"
-
-
-
-
"小部件"
"壁纸"
"设置"
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index c1486ef9b4..cad95f27c0 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -104,10 +104,6 @@
"已關閉資料夾"
"資料夾已重新命名為「%1$s」"
"資料夾:%1$s"
-
-
-
-
"小工具"
"桌布"
"設定"
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index d4acb20736..5f482430ef 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -104,10 +104,6 @@
"資料夾已關閉"
"已將資料夾重新命名為「%1$s」"
"資料夾:%1$s"
-
-
-
-
"小工具"
"桌布"
"設定"
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index c07f6a96c5..e982eb419c 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -104,10 +104,6 @@
"Ifolda ivaliwe"
"Ifolda iqanjwe kabusha ngo-%1$s"
"Ifolda: %1$s"
-
-
-
-
"Amawijethi"
"Izithombe zangemuva"
"Izilungiselelo"
diff --git a/src/com/android/launcher3/AppsCustomizePagedView.java b/src/com/android/launcher3/AppsCustomizePagedView.java
index 251ae2108e..5c8828aaf7 100644
--- a/src/com/android/launcher3/AppsCustomizePagedView.java
+++ b/src/com/android/launcher3/AppsCustomizePagedView.java
@@ -828,6 +828,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen
}
});
} else {
+ mLauncher.getWorkspace().removeExtraEmptyScreen(true, null);
mLauncher.unlockScreenOrientation(false);
}
}
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index c87f9e2f0b..c22a6bf3fd 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2078,6 +2078,10 @@ public class Launcher extends Activity
return mWorkspaceLoading || mWaitingForResult;
}
+ public boolean isWorkspaceLoading() {
+ return mWorkspaceLoading;
+ }
+
private void resetAddInfo() {
mPendingAddInfo.container = ItemInfo.NO_ID;
mPendingAddInfo.screenId = -1;
@@ -2887,7 +2891,7 @@ public class Launcher extends Activity
mWorkspaceBackgroundDrawable : null);
}
- protected void changeWallpaperVisiblity(boolean visible) {
+ void updateWallpaperVisibility(boolean visible) {
int wpflags = visible ? WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER : 0;
int curflags = getWindow().getAttributes().flags
& WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER;
@@ -3771,6 +3775,8 @@ public class Launcher extends Activity
* Implementation of the method from LauncherModel.Callbacks.
*/
public void startBinding() {
+ mWorkspaceLoading = true;
+
// If we're starting binding all over again, clear any bind calls we'd postponed in
// the past (see waitUntilResume) -- we don't need them since we're starting binding
// from scratch again
diff --git a/src/com/android/launcher3/LauncherBackupHelper.java b/src/com/android/launcher3/LauncherBackupHelper.java
index c706cf1745..62e6f3102b 100644
--- a/src/com/android/launcher3/LauncherBackupHelper.java
+++ b/src/com/android/launcher3/LauncherBackupHelper.java
@@ -50,9 +50,7 @@ import android.util.Base64;
import android.util.Log;
import java.io.ByteArrayOutputStream;
-import java.io.File;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URISyntaxException;
@@ -188,16 +186,20 @@ public class LauncherBackupHelper implements BackupHelper {
Log.v(TAG, "lastBackupTime = " + lastBackupTime);
ArrayList keys = new ArrayList();
- try {
- backupFavorites(in, data, out, keys);
- backupScreens(in, data, out, keys);
- backupIcons(in, data, out, keys);
- backupWidgets(in, data, out, keys);
- } catch (IOException e) {
- Log.e(TAG, "launcher backup has failed", e);
+ if (launcherIsReady()) {
+ try {
+ backupFavorites(in, data, out, keys);
+ backupScreens(in, data, out, keys);
+ backupIcons(in, data, out, keys);
+ backupWidgets(in, data, out, keys);
+ } catch (IOException e) {
+ Log.e(TAG, "launcher backup has failed", e);
+ }
+ out.key = keys.toArray(new BackupProtos.Key[keys.size()]);
+ } else {
+ out = in;
}
- out.key = keys.toArray(new BackupProtos.Key[keys.size()]);
writeJournal(newState, out);
Log.v(TAG, "onBackup: wrote " + out.bytes + "b in " + out.rows + " rows.");
}
@@ -1129,6 +1131,26 @@ public class LauncherBackupHelper implements BackupHelper {
return mIconCache != null;
}
+
+ // check if the launcher is in a state to support backup
+ private boolean launcherIsReady() {
+ ContentResolver cr = mContext.getContentResolver();
+ Cursor cursor = cr.query(Favorites.CONTENT_URI, FAVORITE_PROJECTION, null, null, null);
+ if (cursor == null) {
+ // launcher data has been wiped, do nothing
+ return false;
+ }
+ cursor.close();
+
+ if (!initializeIconCache()) {
+ // launcher services are unavailable, try again later
+ dataChanged();
+ return false;
+ }
+
+ return true;
+ }
+
private class KeyParsingException extends Throwable {
private KeyParsingException(Throwable cause) {
super(cause);
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 50d29ed296..86c603e875 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -863,6 +863,12 @@ public class Workspace extends SmoothPagedView
// Log to disk
Launcher.addDumpLog(TAG, "11683562 - stripEmptyScreens()", true);
+ if (mLauncher.isWorkspaceLoading()) {
+ // Don't strip empty screens if the workspace is still loading
+ Launcher.addDumpLog(TAG, " - workspace loading, skip", true);
+ return;
+ }
+
if (isPageMoving()) {
mStripScreensOnPageStopMoving = true;
return;