Merge "In debug_ui mode, show CAF result state, length of AF scan, fps, for camera2 API." into ub-camera-glacier
diff --git a/src/com/android/camera/app/FilmstripBottomPanel.java b/src/com/android/camera/app/FilmstripBottomPanel.java
index f978856..018476c 100644
--- a/src/com/android/camera/app/FilmstripBottomPanel.java
+++ b/src/com/android/camera/app/FilmstripBottomPanel.java
@@ -16,6 +16,9 @@
 
 package com.android.camera.app;
 
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.ObjectAnimator;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
@@ -269,17 +272,29 @@
     }
 
     public void show() {
-        if (mLayout.getTranslationY() > 0) {
-            mLayout.animate().translationY(0).setDuration(ANIM_DURATION)
-                    .setInterpolator(Gusterpolator.INSTANCE);
-        }
+        ObjectAnimator animator = ObjectAnimator
+                .ofFloat(mLayout, "translationY", mLayout.getHeight(), 0.0f);
+        animator.setDuration(ANIM_DURATION);
+        animator.setInterpolator(Gusterpolator.INSTANCE);
+        animator.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                mViewButton.updateClingVisibility();
+            }
+        });
+        mViewButton.hideClings();
+        animator.start();
     }
 
     public void hide() {
         int offset = mLayout.getHeight();
         if (mLayout.getTranslationY() < offset) {
-            mLayout.animate().translationY(offset).setDuration(ANIM_DURATION)
-                    .setInterpolator(Gusterpolator.INSTANCE);
+            ObjectAnimator animator = ObjectAnimator
+                    .ofFloat(mLayout, "translationY", mLayout.getTranslationY(), offset);
+            animator.setDuration(ANIM_DURATION);
+            animator.setInterpolator(Gusterpolator.INSTANCE);
+            mViewButton.hideClings();
+            animator.start();
         }
     }
 }
diff --git a/src/com/android/camera/one/v2/ImageCaptureManager.java b/src/com/android/camera/one/v2/ImageCaptureManager.java
index 464cb1e..a815345 100644
--- a/src/com/android/camera/one/v2/ImageCaptureManager.java
+++ b/src/com/android/camera/one/v2/ImageCaptureManager.java
@@ -56,7 +56,7 @@
  * they are passed in from the lower-level camera2 API.
  */
 @TargetApi(Build.VERSION_CODES.L)
-public class ImageCaptureManager extends CameraCaptureSession.CaptureListener implements
+public class ImageCaptureManager extends CameraCaptureSession.CaptureCallback implements
         ImageReader.OnImageAvailableListener {
     /**
      * Callback to listen for changes to the ability to capture an existing
diff --git a/src/com/android/camera/one/v2/OneCameraImpl.java b/src/com/android/camera/one/v2/OneCameraImpl.java
index 28e214c..e27755d 100644
--- a/src/com/android/camera/one/v2/OneCameraImpl.java
+++ b/src/com/android/camera/one/v2/OneCameraImpl.java
@@ -153,8 +153,8 @@
     /**
      * Common listener for preview frame metadata.
      */
-    private final CameraCaptureSession.CaptureListener mAutoFocusStateListener = new
-            CameraCaptureSession.CaptureListener() {
+    private final CameraCaptureSession.CaptureCallback mAutoFocusStateListener = new
+            CameraCaptureSession.CaptureCallback() {
                 @Override
                 public void onCaptureStarted(CameraCaptureSession session, CaptureRequest request,
                                              long timestamp) {
@@ -474,7 +474,7 @@
             outputSurfaces.add(previewSurface);
             outputSurfaces.add(mCaptureImageReader.getSurface());
 
-            mDevice.createCaptureSession(outputSurfaces, new CameraCaptureSession.StateListener() {
+            mDevice.createCaptureSession(outputSurfaces, new CameraCaptureSession.StateCallback() {
 
                 @Override
                 public void onConfigureFailed(CameraCaptureSession session) {
diff --git a/src/com/android/camera/one/v2/OneCameraManagerImpl.java b/src/com/android/camera/one/v2/OneCameraManagerImpl.java
index 48b3fcf..0f22477 100644
--- a/src/com/android/camera/one/v2/OneCameraManagerImpl.java
+++ b/src/com/android/camera/one/v2/OneCameraManagerImpl.java
@@ -66,7 +66,7 @@
         try {
             final String cameraId = getCameraId(facing);
             Log.i(TAG, "Opening Camera ID " + cameraId);
-            mCameraManager.openCamera(cameraId, new CameraDevice.StateListener() {
+            mCameraManager.openCamera(cameraId, new CameraDevice.StateCallback() {
 
                 @Override
                 public void onDisconnected(CameraDevice device) {
diff --git a/src/com/android/camera/one/v2/OneCameraZslImpl.java b/src/com/android/camera/one/v2/OneCameraZslImpl.java
index c8a21de..34284dd 100644
--- a/src/com/android/camera/one/v2/OneCameraZslImpl.java
+++ b/src/com/android/camera/one/v2/OneCameraZslImpl.java
@@ -645,7 +645,7 @@
             outputSurfaces.add(previewSurface);
             outputSurfaces.add(mCaptureImageReader.getSurface());
 
-            mDevice.createCaptureSession(outputSurfaces, new CameraCaptureSession.StateListener() {
+            mDevice.createCaptureSession(outputSurfaces, new CameraCaptureSession.StateCallback() {
                     @Override
                 public void onConfigureFailed(CameraCaptureSession session) {
                     listener.onSetupFailed();
diff --git a/src/com/android/camera/widget/Cling.java b/src/com/android/camera/widget/Cling.java
index 46ef68b..712dc9b 100644
--- a/src/com/android/camera/widget/Cling.java
+++ b/src/com/android/camera/widget/Cling.java
@@ -76,7 +76,7 @@
     /**
      * Adjust the translation of the cling to stay on top of the reference view.
      */
-    private void adjustPosition() {
+    public void adjustPosition() {
         if (mReferenceView == null) {
             return;
         }
diff --git a/src/com/android/camera/widget/ExternalViewerButton.java b/src/com/android/camera/widget/ExternalViewerButton.java
index bac54d0..7ac42f4 100644
--- a/src/com/android/camera/widget/ExternalViewerButton.java
+++ b/src/com/android/camera/widget/ExternalViewerButton.java
@@ -110,7 +110,7 @@
     /**
      * Sets all the clings to be invisible.
      */
-    private void hideClings() {
+    public void hideClings() {
         for (int i = 0; i < mClingMap.size(); i++) {
             mClingMap.valueAt(i).setVisibility(View.INVISIBLE);
         }
@@ -134,11 +134,12 @@
      * Updates the visibility of clings based on whether the button is currently
      * shown.
      */
-    private void updateClingVisibility() {
+    public void updateClingVisibility() {
         hideClings();
         if (isShown()) {
-            View cling = mClingMap.get(mState);
+            Cling cling = mClingMap.get(mState);
             if (cling != null) {
+                cling.adjustPosition();
                 cling.setVisibility(View.VISIBLE);
             }
         }