一个Button的Android多个动作

时间:2014-09-17 16:53:37

标签: android android-activity camera

美好的一天!我真的很紧张地编程我的android应用程序。这是问题的家伙。 我有应用程序使用相机广播与表面View.I只有一个按钮,按照想法应该访问相机然后访问后拍照。 我试过if和else语句,但没有帮助我。我搜索整个互联网没有人能给出任何好的解决方案。 因此,想法一个活动中只有一个按钮应该执行这两个功能:打开摄像头后打开摄像头。 请帮助我,并提前感谢。

3 个答案:

答案 0 :(得分:0)

声音就像一个简单的问题。其中一个解决方案是使用2个侦听器并在它们之间切换:

Button button;

final Button.OnClickListener listener2 = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Take picture
    }
};
Button.OnClickListener listener1 = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // Open camera
        v.setOnClickListener(listener2);
    }
};

button.setOnClickListener(listener1);

// Later at some point, e.g. when camera is closed:
button.setOnClickListener(listener1);

答案 1 :(得分:0)

您还可以使用布尔值来跟踪相机状态(打开或关闭)。然后根据布尔值,您可以调用两种不同的方法。喜欢:mCameraOpen是boolean

`@Override
public void onClick(View v){
  if (mCameraOpen){
     methodToCaptureImage();
  }else{
     mCameraOpen = true;
     methodToOpenCamera();
  }
}`

答案 2 :(得分:0)

你绝对不需要2个听众。你甚至不需要一个!只需在布局中使用android:onClick属性将函数绑定到按钮按下,如下所示:android:onClick="onButtonPress"。然后使用相机本身来确定按钮的动作。只有在相机对象不活动时才使其为null。这是Java代码:

Camera mCamera = null;
Button mButton;

private void openCamera(){
    try{
        mCamera = Camera.open();
        mButton.setText(<your text here>);
    } catch (RuntimeException ex){
        // Handle exception if cannot access camera
    }
}

private void releaseCamera(){
    mCamera.release();
    mCamera = null;
    mButton.setText(<your text here>);
}

private void captureImage(){
    // Whatever you do to capture image
}

public void onButtonPress(View clickedView){
    if (mCamera == null) openCamera();
    else captureImage();
}

希望这有帮助!