问题描述
我正在尝试了解camera2 api在Google Camera2Basic示例代码中的工作原理。 具体来说,“图片”按钮如何注册镜头?
在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()
注册了点击?
但是它到底是什么?
我看到这是传递但我不明白发生了什么。
我通常做的是做一些事情,比如在onCreateView()
设置一个按钮,并将其setOnClickListener()
到某个动作,如下所示:
photoButton = (Button)v.findViewById(R.id.picture);
photoButton.setOnClickListener(new View.onSetClickListener() {
@Override
public void onClick(View v) {
//some action
}
});
1楼
在示例代码中也发生了同样的事情。
但是,它看起来有点不同,因为Camera2BasicFragment
活动正在实现OnClickListener
。
因此,当onClickListener设置, this
是考虑到说,本次活动将覆盖onClick
方法。
因此,当单击该按钮时,将自动调用类中的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;
}
}
}