diff --git a/api/current.xml b/api/current.xml index 36a82a8151d1f..b5352d111debd 100644 --- a/api/current.xml +++ b/api/current.xml @@ -3573,6 +3573,17 @@ visibility="public" > + + + + + + + + diff --git a/core/res/res/anim/task_close_enter.xml b/core/res/res/anim/task_close_enter.xml index 303cfd6827381..c42ad830db901 100644 --- a/core/res/res/anim/task_close_enter.xml +++ b/core/res/res/anim/task_close_enter.xml @@ -18,9 +18,14 @@ --> + android:interpolator="@anim/decelerate_interpolator" + android:zAdjustment="top"> + + diff --git a/core/res/res/anim/task_close_exit.xml b/core/res/res/anim/task_close_exit.xml index a28ac3ba902a6..66d34808ddcd3 100644 --- a/core/res/res/anim/task_close_exit.xml +++ b/core/res/res/anim/task_close_exit.xml @@ -18,12 +18,7 @@ --> - - + android:interpolator="@anim/decelerate_interpolator"> + diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim/task_open_enter.xml index 234abb23cbcda..66adf9fa6801c 100644 --- a/core/res/res/anim/task_open_enter.xml +++ b/core/res/res/anim/task_open_enter.xml @@ -18,12 +18,7 @@ --> - - + android:interpolator="@anim/decelerate_interpolator"> + diff --git a/core/res/res/anim/task_open_exit.xml b/core/res/res/anim/task_open_exit.xml index db331b156c98b..4a2cef431031b 100644 --- a/core/res/res/anim/task_open_exit.xml +++ b/core/res/res/anim/task_open_exit.xml @@ -18,9 +18,14 @@ --> + android:interpolator="@anim/decelerate_interpolator" + android:zAdjustment="top"> + + diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 365363a4f41cd..85f5ce315c0d6 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -288,6 +288,12 @@ ignored and the activity simply finished. --> + + + - 250 + 200 400 diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 305e415e793cb..257e0f25f3a00 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -1171,6 +1171,7 @@ + diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 6426080f7b6bc..47c68adee937e 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -58,19 +58,6 @@ @anim/activity_open_exit @anim/activity_close_enter @anim/activity_close_exit - @anim/activity_open_enter - @anim/activity_open_exit - @anim/activity_close_enter - @anim/activity_close_exit - @anim/activity_open_enter - @anim/activity_open_exit - @anim/activity_close_enter - @anim/activity_close_exit - - - @anim/wallpaper_open_enter @anim/wallpaper_open_exit @anim/wallpaper_close_enter diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index f742f9fa023e0..2c39c2a688ebe 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -3913,6 +3913,20 @@ public class WindowManagerService extends IWindowManager.Stub return mPolicy.inKeyguardRestrictedKeyInputMode(); } + public void closeSystemDialogs(String reason) { + synchronized(mWindowMap) { + for (int i=mWindows.size()-1; i>=0; i--) { + WindowState w = (WindowState)mWindows.get(i); + if (w.mSurface != null) { + try { + w.mClient.closeSystemDialogs(reason); + } catch (RemoteException e) { + } + } + } + } + } + static float fixScale(float scale) { if (scale < 0) scale = 0; else if (scale > 20) scale = 20; diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 8a4fa7c00c568..961796c6843e3 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -4957,6 +4957,16 @@ public final class ActivityManagerService extends ActivityManagerNative implemen } mWatchers.finishBroadcast(); + mWindowManager.closeSystemDialogs(reason); + + for (i=mHistory.size()-1; i>=0; i--) { + HistoryRecord r = (HistoryRecord)mHistory.get(i); + if ((r.info.flags&ActivityInfo.FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS) != 0) { + finishActivityLocked(r, i, + Activity.RESULT_CANCELED, null, "close-sys"); + } + } + broadcastIntentLocked(null, null, intent, null, null, 0, null, null, null, false, false, -1, uid); } diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java index e4ff4942e1bc8..d28a15149ec9b 100644 --- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java +++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java @@ -1067,7 +1067,12 @@ public final class Bridge implements ILayoutBridge { public void wallpaperOffsetsComplete(IBinder window) { // pass for now. } - + + @SuppressWarnings("unused") + public void closeSystemDialogs(String reason) { + // pass for now. + } + public IBinder asBinder() { // pass for now. return null; @@ -1126,6 +1131,11 @@ public final class Bridge implements ILayoutBridge { // pass for now. } + @SuppressWarnings("unused") + public void closeSystemDialogs(String reason) { + // pass for now. + } + public IBinder asBinder() { // pass for now. return null;