2727import android .view .LayoutInflater ;
2828import android .view .MotionEvent ;
2929import android .view .View ;
30+ import android .view .WindowManager ;
3031import android .widget .FrameLayout ;
3132import android .widget .ImageView ;
3233import android .widget .ImageView .ScaleType ;
@@ -47,6 +48,7 @@ interface Callbacks {
4748 private final Handler mHandler = new Handler ();
4849 private final KeyguardActivityLauncher mActivityLauncher ;
4950 private final Callbacks mCallbacks ;
51+ private final WindowManager mWindowManager ;
5052
5153 private View mWidgetView ;
5254 private long mLaunchCameraStart ;
@@ -81,6 +83,7 @@ private CameraWidgetFrame(Context context, Callbacks callbacks,
8183
8284 mCallbacks = callbacks ;
8385 mActivityLauncher = activityLauncher ;
86+ mWindowManager = (WindowManager ) context .getSystemService (Context .WINDOW_SERVICE );
8487 }
8588
8689 public static CameraWidgetFrame create (Context context , Callbacks callbacks ,
@@ -200,6 +203,7 @@ private void transitionToCamera() {
200203 scaleX , scaleY ,
201204 startCenter , finishCenter ));
202205
206+ enableWindowExitAnimation (false );
203207 animate ()
204208 .scaleX (scale )
205209 .scaleY (scale )
@@ -305,11 +309,22 @@ private void reset() {
305309 setScaleX (1 );
306310 setScaleY (1 );
307311 setTranslationY (0 );
312+ enableWindowExitAnimation (true );
308313 }
309314
310315 @ Override
311316 protected void onAttachedToWindow () {
312317 super .onAttachedToWindow ();
313318 mHandler .post (mRenderRunnable );
314319 }
320+
321+ private void enableWindowExitAnimation (boolean isEnabled ) {
322+ View root = getRootView ();
323+ WindowManager .LayoutParams lp = (WindowManager .LayoutParams ) root .getLayoutParams ();
324+ int newWindowAnimations = isEnabled ? com .android .internal .R .style .Animation_LockScreen : 0 ;
325+ if (newWindowAnimations != lp .windowAnimations ) {
326+ lp .windowAnimations = newWindowAnimations ;
327+ mWindowManager .updateViewLayout (root , lp );
328+ }
329+ }
315330}
0 commit comments