summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml1
-rw-r--r--WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java13
-rw-r--r--src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java13
-rw-r--r--src/com/android/launcher3/WorkspaceStateTransitionAnimation.java36
-rw-r--r--src/com/android/launcher3/allapps/AllAppsRecyclerView.java13
5 files changed, 44 insertions, 32 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 03e9bbf8f..873ca32fd 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -83,6 +83,7 @@
android:windowSoftInputMode="adjustPan"
android:screenOrientation="nosensor"
android:resumeWhilePausing="true"
+ android:taskAffinity=""
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
diff --git a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
index d9bfc30eb..88dc3e22b 100644
--- a/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
+++ b/WallpaperPicker/src/com/android/launcher3/WallpaperPickerActivity.java
@@ -16,6 +16,7 @@
package com.android.launcher3;
+import android.Manifest.permission;
import android.animation.LayoutTransition;
import android.annotation.TargetApi;
import android.app.ActionBar;
@@ -37,10 +38,12 @@ import android.graphics.PorterDuff;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
+import android.Manifest;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
+import android.os.Process;
import android.provider.MediaStore;
import android.util.Log;
import android.util.Pair;
@@ -680,6 +683,16 @@ public class WallpaperPickerActivity extends WallpaperCropActivity {
}
protected Bitmap getThumbnailOfLastPhoto() {
+ boolean canReadExternalStorage = getActivity().checkPermission(
+ Manifest.permission.READ_EXTERNAL_STORAGE, Process.myPid(), Process.myUid()) ==
+ PackageManager.PERMISSION_GRANTED;
+
+ if (!canReadExternalStorage) {
+ // MediaStore.Images.Media.EXTERNAL_CONTENT_URI requires
+ // the READ_EXTERNAL_STORAGE permission
+ return null;
+ }
+
Cursor cursor = MediaStore.Images.Media.query(getContext().getContentResolver(),
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaStore.Images.ImageColumns._ID,
diff --git a/src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java b/src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java
index 6ff2ec660..2c4184dc4 100644
--- a/src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java
+++ b/src/com/android/launcher3/BaseRecyclerViewFastScrollBar.java
@@ -15,7 +15,6 @@
*/
package com.android.launcher3;
-import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
@@ -29,6 +28,8 @@ import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.ViewConfiguration;
+import com.android.launcher3.util.Thunk;
+
/**
* The track and scrollbar that shows when you scroll the list.
*/
@@ -41,20 +42,20 @@ public class BaseRecyclerViewFastScrollBar {
private final static int MAX_TRACK_ALPHA = 30;
private final static int SCROLL_BAR_VIS_DURATION = 150;
- private BaseRecyclerView mRv;
+ @Thunk BaseRecyclerView mRv;
private BaseRecyclerViewFastScrollPopup mPopup;
private AnimatorSet mScrollbarAnimator;
private int mThumbInactiveColor;
private int mThumbActiveColor;
- private Point mThumbOffset = new Point(-1, -1);
- private Paint mThumbPaint;
+ @Thunk Point mThumbOffset = new Point(-1, -1);
+ @Thunk Paint mThumbPaint;
private Paint mTrackPaint;
private int mThumbMinWidth;
private int mThumbMaxWidth;
- private int mThumbWidth;
- private int mThumbHeight;
+ @Thunk int mThumbWidth;
+ @Thunk int mThumbHeight;
// The inset is the buffer around which a point will still register as a click on the scrollbar
private int mTouchInset;
private boolean mIsDragging;
diff --git a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
index 399ef9755..b8916a72b 100644
--- a/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
+++ b/src/com/android/launcher3/WorkspaceStateTransitionAnimation.java
@@ -192,9 +192,6 @@ public class WorkspaceStateTransitionAnimation {
@Thunk final ZoomInInterpolator mZoomInInterpolator = new ZoomInInterpolator();
- // These properties refer to the background protection gradient used for AllApps and Widget tray.
- @Thunk ValueAnimator mBackgroundFadeOutAnimation;
-
@Thunk float mSpringLoadedShrinkFactor;
@Thunk float mOverviewModeShrinkFactor;
@Thunk float mWorkspaceScrimAlpha;
@@ -548,25 +545,29 @@ public class WorkspaceStateTransitionAnimation {
* @param animated whether or not to set the background alpha immediately
* @duration duration of the animation
*/
- private void animateBackgroundGradient(TransitionStates states, boolean animated, int duration) {
+ private void animateBackgroundGradient(TransitionStates states,
+ boolean animated, int duration) {
+
final DragLayer dragLayer = mLauncher.getDragLayer();
final float startAlpha = dragLayer.getBackgroundAlpha();
float finalAlpha = states.stateIsNormal ? 0 : mWorkspaceScrimAlpha;
if (finalAlpha != startAlpha) {
if (animated) {
- mBackgroundFadeOutAnimation =
+ // These properties refer to the background protection gradient used for AllApps
+ // and Widget tray.
+ ValueAnimator bgFadeOutAnimation =
LauncherAnimUtils.ofFloat(mWorkspace, startAlpha, finalAlpha);
- mBackgroundFadeOutAnimation.addUpdateListener(
- new ValueAnimator.AnimatorUpdateListener() {
+ bgFadeOutAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
+ @Override
public void onAnimationUpdate(ValueAnimator animation) {
dragLayer.setBackgroundAlpha(
((Float)animation.getAnimatedValue()).floatValue());
}
});
- mBackgroundFadeOutAnimation.setInterpolator(new DecelerateInterpolator(1.5f));
- mBackgroundFadeOutAnimation.setDuration(duration);
- mStateAnimator.play(mBackgroundFadeOutAnimation);
+ bgFadeOutAnimation.setInterpolator(new DecelerateInterpolator(1.5f));
+ bgFadeOutAnimation.setDuration(duration);
+ mStateAnimator.play(bgFadeOutAnimation);
} else {
dragLayer.setBackgroundAlpha(finalAlpha);
}
@@ -577,17 +578,10 @@ public class WorkspaceStateTransitionAnimation {
* Cancels the current animation.
*/
private void cancelAnimation() {
- cancelAnimator(mStateAnimator);
- mStateAnimator = null;
- }
-
- /**
- * Cancels the specified animation.
- */
- private void cancelAnimator(Animator animator) {
- if (animator != null) {
- animator.setDuration(0);
- animator.cancel();
+ if (mStateAnimator != null) {
+ mStateAnimator.setDuration(0);
+ mStateAnimator.cancel();
}
+ mStateAnimator = null;
}
} \ No newline at end of file
diff --git a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
index c83c6cfd9..874e895d9 100644
--- a/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsRecyclerView.java
@@ -23,11 +23,13 @@ import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.ContextThemeWrapper;
import android.view.View;
+
import com.android.launcher3.BaseRecyclerView;
import com.android.launcher3.BaseRecyclerViewFastScrollBar;
import com.android.launcher3.DeviceProfile;
import com.android.launcher3.Launcher;
import com.android.launcher3.Stats;
+import com.android.launcher3.util.Thunk;
import java.util.List;
@@ -47,10 +49,11 @@ public class AllAppsRecyclerView extends BaseRecyclerView
private int mNumAppsPerRow;
private int mPredictionBarHeight;
- private BaseRecyclerViewFastScrollBar.FastScrollFocusableView mLastFastScrollFocusedView;
- private int mPrevFastScrollFocusedPosition;
- private int mFastScrollFrameIndex;
- private int[] mFastScrollFrames = new int[10];
+ @Thunk BaseRecyclerViewFastScrollBar.FastScrollFocusableView mLastFastScrollFocusedView;
+ @Thunk int mPrevFastScrollFocusedPosition;
+ @Thunk int mFastScrollFrameIndex;
+ @Thunk final int[] mFastScrollFrames = new int[10];
+
private final int mFastScrollMode = FAST_SCROLL_MODE_JUMP_TO_FIRST_ICON;
private final int mScrollBarMode = FAST_SCROLL_BAR_MODE_DISTRIBUTE_BY_ROW;
@@ -267,7 +270,7 @@ public class AllAppsRecyclerView extends BaseRecyclerView
* This runnable runs a single frame of the smooth scroll animation and posts the next frame
* if necessary.
*/
- private Runnable mSmoothSnapNextFrameRunnable = new Runnable() {
+ @Thunk Runnable mSmoothSnapNextFrameRunnable = new Runnable() {
@Override
public void run() {
if (mFastScrollFrameIndex < mFastScrollFrames.length) {