ShutterButtonpublic class ShutterButton extends 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. |
Fields Summary |
---|
private OnShutterButtonListener | mListener | private boolean | mOldPressed |
Methods Summary |
---|
private void | callShutterButtonFocus(boolean pressed)
if (mListener != null) {
mListener.onShutterButtonFocus(this, pressed);
}
| protected void | drawableStateChanged()Hook into the drawable state changing to get changes to isPressed -- the
onPressed listener doesn't always get called when the pressed state changes.
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;
}
| public boolean | performClick()
boolean result = super.performClick();
if (mListener != null) {
mListener.onShutterButtonClick(this);
}
return result;
| public void | setOnShutterButtonListener(com.android.camera.ShutterButton$OnShutterButtonListener listener)
mListener = listener;
|
|