summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/ShutterButton.java
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:49 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:49 -0800
commitbecfb351a5bc43050128f44eb1bcfbcc0c6dcb7a (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /src/com/android/camera/ShutterButton.java
parenta6aa03f5bd2270bcc52ba1899c22d881955e8e7e (diff)
downloadLegacyCamera-becfb351a5bc43050128f44eb1bcfbcc0c6dcb7a.zip
LegacyCamera-becfb351a5bc43050128f44eb1bcfbcc0c6dcb7a.tar.gz
LegacyCamera-becfb351a5bc43050128f44eb1bcfbcc0c6dcb7a.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'src/com/android/camera/ShutterButton.java')
-rw-r--r--src/com/android/camera/ShutterButton.java115
1 files changed, 0 insertions, 115 deletions
diff --git a/src/com/android/camera/ShutterButton.java b/src/com/android/camera/ShutterButton.java
deleted file mode 100644
index bd8d042..0000000
--- a/src/com/android/camera/ShutterButton.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.camera;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.ImageView;
-
-/**
- * A button designed to be used for the on-screen shutter button.
- * It's currently an ImageView that can call a delegate when the pressed state changes.
- */
-public class ShutterButton extends ImageView {
- /**
- * Interface definition for a callback to be invoked when a ModeButton's pressed state changes.
- */
- public interface OnShutterButtonListener {
- /**
- * Called when a ShutterButton has been pressed.
- *
- * @param b The ShutterButton that was pressed.
- */
- void onShutterButtonFocus(ShutterButton b, boolean pressed);
- void onShutterButtonClick(ShutterButton b);
- }
-
- private OnShutterButtonListener mListener;
- private boolean mOldPressed;
-
- public ShutterButton(Context context) {
- super(context);
- }
-
- public ShutterButton(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public ShutterButton(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- public void setOnShutterButtonListener(OnShutterButtonListener listener) {
- mListener = listener;
- }
-
- /**
- * 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 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() {
- public void run() {
- callShutterButtonFocus(pressed);
- }
- });
- } else {
- callShutterButtonFocus(pressed);
- }
- mOldPressed = pressed;
- }
- }
-
- private void callShutterButtonFocus(boolean pressed) {
- if (mListener != null) {
- mListener.onShutterButtonFocus(this, pressed);
- }
- }
-
- @Override
- public boolean performClick() {
- boolean result = super.performClick();
- if (mListener != null) {
- mListener.onShutterButtonClick(this);
- }
- return result;
- }
-}