summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2016-01-15 00:20:58 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-01-15 00:20:58 +0000
commit816baf35660c3c46ffcb9be7ec72d343fb0e1400 (patch)
treeda83ab605e2756f8ac853ba0e0cbdc345ff49aa0 /src
parentb02596cdfcd3fa0e02c309971d9f19f1de022230 (diff)
parentecaeae17f52d6562d23dfec91e44bc3c0b4a6d13 (diff)
downloadandroid_packages_apps_PackageInstaller-816baf35660c3c46ffcb9be7ec72d343fb0e1400.tar.gz
android_packages_apps_PackageInstaller-816baf35660c3c46ffcb9be7ec72d343fb0e1400.tar.bz2
android_packages_apps_PackageInstaller-816baf35660c3c46ffcb9be7ec72d343fb0e1400.zip
Merge "Make request permissions dialog layout robost"
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java15
-rw-r--r--src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java1
-rw-r--r--src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java25
3 files changed, 35 insertions, 6 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
index ffa8bf35..7e216636 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java
@@ -25,6 +25,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.PermissionInfo;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.drawable.Icon;
import android.hardware.camera2.utils.ArrayUtils;
@@ -173,6 +174,20 @@ public class GrantPermissionsActivity extends OverlayTouchActivity
}
@Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ // This is just gross - we need to relayout the window as
+ // dialog width may be different in landscape vs portrait
+ // which affect the min window height needed to show all
+ // content. We have to re-add the window to force it to be
+ // resized if needed. The way the permission grant dialog
+ // is implemented is not correct and has to be rewritten.
+ View decor = getWindow().getDecorView();
+ getWindowManager().removeViewImmediate(decor);
+ getWindowManager().addView(decor, decor.getLayoutParams());
+ }
+
+ @Override
public boolean dispatchTouchEvent(MotionEvent ev) {
View rootView = getWindow().getDecorView();
if (rootView.getTop() != 0) {
diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java
index c5d78784..06ca266a 100644
--- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java
+++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsDefaultViewHandler.java
@@ -20,7 +20,6 @@ import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.content.Context;
-import android.content.res.Resources;
import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.util.SparseArray;
diff --git a/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java b/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java
index c9ccf9c1..1af400b3 100644
--- a/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java
+++ b/src/com/android/packageinstaller/permission/ui/ManualLayoutFrame.java
@@ -17,7 +17,6 @@ package com.android.packageinstaller.permission.ui;
import android.content.Context;
import android.util.AttributeSet;
-import android.view.View;
import android.widget.FrameLayout;
/**
@@ -27,13 +26,10 @@ import android.widget.FrameLayout;
* but allows the view to grow downwards for animation.
*/
public class ManualLayoutFrame extends FrameLayout {
-
private int mDesiredHeight;
private int mHeight;
private int mWidth;
- private View mOffsetView;
-
public ManualLayoutFrame(Context context, AttributeSet attrs) {
super(context, attrs);
setClipChildren(false);
@@ -47,10 +43,29 @@ public class ManualLayoutFrame extends FrameLayout {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mWidth != 0) {
- // Keep the width constant to avoid weirdness.
+ int newWidth = mWidth;
+ final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
+ switch (widthMode) {
+ case MeasureSpec.AT_MOST: {
+ newWidth = Math.min(mWidth, MeasureSpec.getSize(widthMeasureSpec));
+ } break;
+ case MeasureSpec.EXACTLY: {
+ newWidth = MeasureSpec.getSize(widthMeasureSpec);
+ } break;
+ }
+ // If the width changes we have to re-evaluate the height
+ if (newWidth != mWidth) {
+ mWidth = newWidth;
+ mHeight = 0;
+ }
widthMeasureSpec = MeasureSpec.makeMeasureSpec(mWidth, MeasureSpec.EXACTLY);
}
+
+ // Let the content measure how much it needs to be fully shown
+ heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
+
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+
mDesiredHeight = getMeasuredHeight();
if (mHeight == 0 && mDesiredHeight != 0) {
// Record the first non-zero width and height, this will be the height henceforth.