了解 Android 中的 Camera2Basic 中的 camera2 API 中的按钮单击

Understanding the button click in camera2 API in Camera2Basic in Android

我试图了解 camera2 api 在 Google Camera2Basic 示例代码中的工作原理。具体来说,'Picture' 按钮如何注册镜头?

在 onCreateViewCreated 中:

@Override
public void onViewCreated(final View view, Bundle savedInstanceState) {
    view.findViewById(R.id.picture).setOnClickListener(this);
    view.findViewById(R.id.info).setOnClickListener(this);
    mTextureView = (AutoFitTextureView) view.findViewById(R.id.texture);
}

所以 setOnClickListener() 注册点击?但是它有什么用呢?我看到 this 已传入,但我不明白发生了什么。

我通常做的是在 onCreateView() 中设置一个按钮并将其 setOnClickListener() 连接到如下操作:

photoButton = (Button)v.findViewById(R.id.picture);
photoButton.setOnClickListener(new View.onSetClickListener() {
    @Override
    public void onClick(View v) {
        //some action
    }
});

示例代码中也发生了同样的事情。但是,它看起来有点不同,因为 Camera2BasicFragment activity 正在实施 OnClickListener。所以在设置onClickListener的时候给出this表示这个activity会覆盖onClick方法。因此,当单击按钮时,class 中的 onClick 方法会自动调用。

@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.picture: {
            takePicture();
            break;
        }
        case R.id.info: {
            Activity activity = getActivity();
            if (null != activity) {
                new AlertDialog.Builder(activity)
                        .setMessage(R.string.intro_message)
                        .setPositiveButton(android.R.string.ok, null)
                        .show();
            }
            break;
        }
    }
}