summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAnthony Hugh <ahugh@google.com>2015-10-05 12:28:07 -0700
committerAnthony Hugh <ahugh@google.com>2015-10-05 15:15:48 -0700
commit6a5762884adc64ea95bd206c46d60031428e977c (patch)
tree8e6e1f047cdf15d26a9c2fb3950587038ae51220 /src
parent12c698b4d2d75895c72bc900ed363acd03c94bfe (diff)
downloadandroid_packages_apps_PackageInstaller-6a5762884adc64ea95bd206c46d60031428e977c.tar.gz
android_packages_apps_PackageInstaller-6a5762884adc64ea95bd206c46d60031428e977c.tar.bz2
android_packages_apps_PackageInstaller-6a5762884adc64ea95bd206c46d60031428e977c.zip
Permissions redline fixes
This fixes the button bar animation to work on round devices and also fixes the max height animation to make sure the vertical button layout animates to max height when there are only two buttons. Also adjust some redlines like margins on the buttons and updated some files that were missing our licensing header. Change-Id: Ifad4d0f92605be04db2d3c991b4e8a26eadb4b14
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java2
-rw-r--r--src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java147
2 files changed, 99 insertions, 50 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
index 242d0bce..21042f00 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsWatchViewHandler.java
@@ -57,7 +57,7 @@ final class GrantPermissionsWatchViewHandler extends ConfirmationViewHandler
@Override
public void updateWindowAttributes(WindowManager.LayoutParams outLayoutParams) {
outLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
- outLayoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
+ outLayoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
outLayoutParams.format = PixelFormat.OPAQUE;
outLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG;
outLayoutParams.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
diff --git a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java b/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
index 277bada9..db3340f6 100644
--- a/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/wear/ConfirmationViewHandler.java
@@ -8,6 +8,7 @@ import android.graphics.drawable.Icon;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -24,11 +25,15 @@ import com.android.packageinstaller.R;
public abstract class ConfirmationViewHandler implements
Handler.Callback,
View.OnClickListener,
- ViewTreeObserver.OnScrollChangedListener {
+ ViewTreeObserver.OnScrollChangedListener,
+ ViewTreeObserver.OnGlobalLayoutListener {
+ private static final String TAG = "ConfirmationViewHandler";
+
public static final int MODE_HORIZONTAL_BUTTONS = 0;
public static final int MODE_VERTICAL_BUTTONS = 1;
- private static final int MSG_HIDE_BUTTON_BAR = 1001;
+ private static final int MSG_SHOW_BUTTON_BAR = 1001;
+ private static final int MSG_HIDE_BUTTON_BAR = 1002;
private static final long HIDE_ANIM_DURATION = 500;
private View mRoot;
@@ -103,6 +108,9 @@ public abstract class ConfirmationViewHandler implements
R.dimen.conf_diag_floating_height);
mHideHandler = new Handler(this);
+ mScrollingContainer.getViewTreeObserver().addOnScrollChangedListener(this);
+ mRoot.getViewTreeObserver().addOnGlobalLayoutListener(this);
+
return mRoot;
}
@@ -158,54 +166,41 @@ public abstract class ConfirmationViewHandler implements
mVerticalButton3.setCompoundDrawablesWithIntrinsicBounds(
getVerticalButton3Icon(), null, null, null);
}
-
break;
}
mScrollingContainer.scrollTo(0, 0);
- mScrollingContainer.getViewTreeObserver().addOnScrollChangedListener(this);
+ mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
+ mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR);
+ }
+
+ @Override
+ public void onGlobalLayout() {
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, "onGlobalLayout");
+ Log.d(TAG, " contentHeight: " + mContent.getHeight());
+ }
+
+ if (mButtonBarAnimator != null) {
+ mButtonBarAnimator.cancel();
+ }
+
+ // In order to fake the buttons peeking at the bottom, need to do set the
+ // padding properly.
+ if (mContent.getPaddingBottom() != mButtonBarContainer.getHeight()) {
+ mContent.setPadding(0, 0, 0, mButtonBarContainer.getHeight());
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, " set mContent.PaddingBottom: " + mButtonBarContainer.getHeight());
+ }
+ }
- mRoot.getViewTreeObserver().addOnGlobalLayoutListener(
- new ViewTreeObserver.OnGlobalLayoutListener() {
- @Override
- public void onGlobalLayout() {
- // Setup Button animation.
- // pop the button bar back to full height, stop all animation
- if (mButtonBarAnimator != null) {
- mButtonBarAnimator.cancel();
- }
-
- // In order to fake the buttons peeking at the bottom, need to do set the
- // padding properly.
- if (mContent.getPaddingBottom() != mButtonBarContainer.getHeight()) {
- mContent.setPadding(0, 0, 0, mButtonBarContainer.getHeight());
- }
-
- // stop any calls to hide the button bar in the future
- mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
- mHiddenBefore = false;
-
- // determine which mode the scrolling should work at.
- if (mContent.getHeight() > mScrollingContainer.getHeight()) {
- mButtonBarContainer.setTranslationZ(mButtonBarFloatingHeight);
- mHideHandler.sendEmptyMessageDelayed(MSG_HIDE_BUTTON_BAR, 3000);
- int maxButtonBarHeight = 0;
- if (mButtonBarContainer.getHeight() >= mRoot.getHeight() / 2) {
- // If the ButtonBar is bigger than half the screen, then don't
- // animate all the way.
- maxButtonBarHeight = mRoot.getHeight() / 2;
- }
- generateButtonBarAnimator(mButtonBarContainer.getHeight(),
- maxButtonBarHeight, 0, mButtonBarFloatingHeight, 1000);
- } else {
- mButtonBarContainer.setTranslationY(0);
- mButtonBarContainer.setTranslationZ(0);
- }
- mRoot.getViewTreeObserver().removeOnGlobalLayoutListener(this);
- }
- });
+ mButtonBarContainer.setTranslationY(mButtonBarContainer.getHeight());
+ // Give everything a chance to render
+ mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
+ mHideHandler.removeMessages(MSG_SHOW_BUTTON_BAR);
+ mHideHandler.sendEmptyMessageDelayed(MSG_SHOW_BUTTON_BAR, 50);
}
@Override
@@ -229,6 +224,9 @@ public abstract class ConfirmationViewHandler implements
@Override
public boolean handleMessage (Message msg) {
switch (msg.what) {
+ case MSG_SHOW_BUTTON_BAR:
+ showButtonBar();
+ return true;
case MSG_HIDE_BUTTON_BAR:
hideButtonBar();
return true;
@@ -237,21 +235,72 @@ public abstract class ConfirmationViewHandler implements
}
@Override
- public void onScrollChanged() {
+ public void onScrollChanged () {
mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
hideButtonBar();
}
+ private void showButtonBar() {
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, "showButtonBar");
+ }
+
+ // Setup Button animation.
+ // pop the button bar back to full height, stop all animation
+ if (mButtonBarAnimator != null) {
+ mButtonBarAnimator.cancel();
+ }
+
+ // stop any calls to hide the button bar in the future
+ mHideHandler.removeMessages(MSG_HIDE_BUTTON_BAR);
+ mHiddenBefore = false;
+
+ // Evaluate the max height the button bar can go
+ final int screenHeight = mRoot.getHeight();
+ final int buttonBarHeight = mButtonBarContainer.getHeight();
+ final int buttonBarMaxHeight =
+ Math.min(buttonBarHeight, screenHeight / 2);
+
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ final int contentHeight = mContent.getHeight() - buttonBarHeight;
+ Log.d(TAG, " screenHeight: " + screenHeight);
+ Log.d(TAG, " contentHeight: " + contentHeight);
+ Log.d(TAG, " buttonBarHeight: " + buttonBarHeight);
+ Log.d(TAG, " buttonBarMaxHeight: " + buttonBarMaxHeight);
+ }
+
+ mButtonBarContainer.setTranslationZ(mButtonBarFloatingHeight);
+ mHideHandler.sendEmptyMessageDelayed(MSG_HIDE_BUTTON_BAR, 3000);
+
+ generateButtonBarAnimator(buttonBarHeight,
+ buttonBarHeight - buttonBarMaxHeight, 0, mButtonBarFloatingHeight, 1000);
+ }
+
private void hideButtonBar() {
- // get the offset to the top of the button bar
- int offset = mScrollingContainer.getHeight() + mButtonBarContainer.getHeight() -
- mContent.getHeight() + Math.max(mScrollingContainer.getScrollY(), 0);
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, "hideButtonBar");
+ }
+
// The desired margin space between the button bar and the bottom of the dialog text
- int topMargin = mContext.getResources().getDimensionPixelSize(
+ final int topMargin = mContext.getResources().getDimensionPixelSize(
R.dimen.conf_diag_button_container_top_margin);
- int translationY = topMargin + (offset > 0 ?
+ final int contentHeight = mContent.getHeight() + topMargin;
+ final int screenHeight = mRoot.getHeight();
+ final int buttonBarHeight = mButtonBarContainer.getHeight();
+
+ final int offset = screenHeight + buttonBarHeight
+ - contentHeight + Math.max(mScrollingContainer.getScrollY(), 0);
+ final int translationY = (offset > 0 ?
mButtonBarContainer.getHeight() - offset : mButtonBarContainer.getHeight());
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, " contentHeight: " + contentHeight);
+ Log.d(TAG, " buttonBarHeight: " + buttonBarHeight);
+ Log.d(TAG, " mContent.getPaddingBottom(): " + mContent.getPaddingBottom());
+ Log.d(TAG, " mScrollingContainer.getScrollY(): " + mScrollingContainer.getScrollY());
+ Log.d(TAG, " translationY: " + translationY);
+ }
+
if (!mHiddenBefore || mButtonBarAnimator == null) {
// hasn't hidden the bar yet, just hide now to the right height
generateButtonBarAnimator(