summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorArne Coucheron <arco68@gmail.com>2017-08-10 06:48:28 +0200
committerArne Coucheron <arco68@gmail.com>2018-01-27 00:41:45 +0100
commit7f4ba23dfc98f36c6bc139b7dbc55948f858e8df (patch)
tree9483651d372703980d887b39ed559674ff72a2e2 /src
parent690481663272ee4cce5dd7670edfe7b0b33a5f85 (diff)
downloadandroid_packages_apps_Snap-7f4ba23dfc98f36c6bc139b7dbc55948f858e8df.tar.gz
android_packages_apps_Snap-7f4ba23dfc98f36c6bc139b7dbc55948f858e8df.tar.bz2
android_packages_apps_Snap-7f4ba23dfc98f36c6bc139b7dbc55948f858e8df.zip
Snap: Bring back original shutter icons and animation
Change-Id: I843ba306053ea7f14fbf805c8633c02a854f84df
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/PhotoModule.java2
-rw-r--r--src/com/android/camera/PhotoUI.java20
-rw-r--r--src/com/android/camera/ShutterButton.java49
-rwxr-xr-xsrc/com/android/camera/ui/CameraControls.java2
-rw-r--r--src/com/android/camera/ui/OneUICameraControls.java2
5 files changed, 71 insertions, 4 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index 21b191cdf..d8d08722b 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -1145,6 +1145,8 @@ public class PhotoModule
return;
}
+ mUI.doShutterAnimation();
+
Location loc = getLocationAccordPictureFormat(mParameters.get(KEY_PICTURE_FORMAT));
mLongShotCaptureCount++;
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index b08c8f108..a075de464 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -649,11 +649,29 @@ public class PhotoUI implements PieListener,
// called from onResume but only the first time
public void initializeFirstTime() {
// Initialize shutter button.
- mShutterButton.setImageResource(R.drawable.btn_new_shutter);
+ mShutterButton.setImageResource(R.drawable.shutter_button_anim);
+ mShutterButton.setOnClickListener(new OnClickListener()
+ {
+ @Override
+ public void onClick(View v) {
+ if (!CameraControls.isAnimating())
+ doShutterAnimation();
+ if (mController.isImageCaptureIntent()) {
+ mCameraControls.setTitleBarVisibility(View.VISIBLE);
+ }
+ }
+ });
+
mShutterButton.setOnShutterButtonListener(mController);
mShutterButton.setVisibility(View.VISIBLE);
}
+ public void doShutterAnimation() {
+ AnimationDrawable frameAnimation = (AnimationDrawable) mShutterButton.getDrawable();
+ frameAnimation.stop();
+ frameAnimation.start();
+ }
+
// called from onResume every other time
public void initializeSecondTime(Camera.Parameters params) {
initializeZoom(params);
diff --git a/src/com/android/camera/ShutterButton.java b/src/com/android/camera/ShutterButton.java
index 22223510c..b35658070 100644
--- a/src/com/android/camera/ShutterButton.java
+++ b/src/com/android/camera/ShutterButton.java
@@ -22,12 +22,14 @@ import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
+import com.android.camera.ui.RotateImageView;
+
/**
* A button designed to be used for the on-screen shutter button.
* It's currently an {@code ImageView} that can call a delegate when the
* pressed state changes.
*/
-public class ShutterButton extends ImageView {
+public class ShutterButton extends RotateImageView {
private class LongClickListener implements View.OnLongClickListener {
public boolean onLongClick(View v) {
@@ -82,6 +84,51 @@ public class ShutterButton extends ImageView {
setLongClickable(enable);
}
+ /**
+ * Hook into the drawable state changing to get changes to isPressed -- the
+ * onPressed listener doesn't always get called when the pressed state
+ * changes.
+ */
+ @Override
+ protected void drawableStateChanged() {
+ super.drawableStateChanged();
+ final boolean pressed = isPressed();
+ if (pressed != mOldPressed) {
+ if (!pressed) {
+ // When pressing the physical camera button the sequence of
+ // events is:
+ // focus pressed, optional camera pressed, focus released.
+ // We want to emulate this sequence of events with the shutter
+ // button. When clicking using a trackball button, the view
+ // system changes the drawable state before posting click
+ // notification, so the sequence of events is:
+ // pressed(true), optional click, pressed(false)
+ // When clicking using touch events, the view system changes the
+ // drawable state after posting click notification, so the
+ // sequence of events is:
+ // pressed(true), pressed(false), optional click
+ // Since we're emulating the physical camera button, we want to
+ // have the same order of events. So we want the optional click
+ // callback to be delivered before the pressed(false) callback.
+ //
+ // To do this, we delay the posting of the pressed(false) event
+ // slightly by pushing it on the event queue. This moves it
+ // after the optional click notification, so our client always
+ // sees events in this sequence:
+ // pressed(true), optional click, pressed(false)
+ post(new Runnable() {
+ @Override
+ public void run() {
+ callShutterButtonFocus(pressed);
+ }
+ });
+ } else {
+ callShutterButtonFocus(pressed);
+ }
+ mOldPressed = pressed;
+ }
+ }
+
private void callShutterButtonFocus(boolean pressed) {
if (mListener != null) {
mListener.onShutterButtonFocus(pressed);
diff --git a/src/com/android/camera/ui/CameraControls.java b/src/com/android/camera/ui/CameraControls.java
index 54355078c..4abe3809c 100755
--- a/src/com/android/camera/ui/CameraControls.java
+++ b/src/com/android/camera/ui/CameraControls.java
@@ -1081,7 +1081,7 @@ public class CameraControls extends RotatableLayout {
View[] views = {
mSceneModeSwitcher, mFilterModeSwitcher, mFrontBackSwitcher,
TsMakeupManager.HAS_TS_MAKEUP ? mTsMakeupSwitcher : mHdrSwitcher,mBokehSwitcher,
- mMenu, mPreview, mSwitcher, mMute, mReviewRetakeButton,
+ mMenu, mShutter, mPreview, mSwitcher, mMute, mReviewRetakeButton,
mReviewCancelButton, mReviewDoneButton, mExitPanorama
};
for (View v : views) {
diff --git a/src/com/android/camera/ui/OneUICameraControls.java b/src/com/android/camera/ui/OneUICameraControls.java
index 04c828604..c5daba52f 100644
--- a/src/com/android/camera/ui/OneUICameraControls.java
+++ b/src/com/android/camera/ui/OneUICameraControls.java
@@ -229,7 +229,7 @@ public class OneUICameraControls extends RotatableLayout {
mViews = new View[]{
mSceneModeSwitcher, mFilterModeSwitcher, mFrontBackSwitcher,
- mTsMakeupSwitcher, mFlashButton, mPreview, mVideoShutter,
+ mTsMakeupSwitcher, mFlashButton, mShutter, mPreview, mVideoShutter,
mPauseButton, mCancelButton
};
mBottomLargeSize = getResources().getDimensionPixelSize(