Android Studio中如何为button控件添加点击事件

通俗地说,对于一个APP的,我该如何设置点击一个按钮就会有我想要的对应的反应功能,这就是这篇要讲的。

一、xml布局文件中

增加一个Button控件,命名为process_btn,按钮上面的文字显示为“灰度”

 <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/process_btn"
        android:text="灰度"/>

二、MainActivity里面

0.在OnCreate函数里添加语句:

setContentView(R.layout.activity_main);

1.在Activity中添加监听器的接口

public class MainActivity extends AppCompatActivity implements View.OnClickListener 
{

这里为OnclickListener,其他还有OnCheckedChangeListener等。下同。

2.在OnCreate函数里为控件加上事件响应

//对按钮加上事件响应
Button processBtn = (Button)this.findViewById(R.id.process_btn);
processBtn.setOnClickListener(this);

3.写控件响应的事件内容的函数,这里的函数为灰度处理函数,用到了OpenCV库。

//设置按下按钮所响应的事件的内容(实际使用OpenCV库的部分)
    public void onClick(View v) {
        Bitmap bitmap = (BitmapFactory.decodeResource(this.getResources(),R.drawable.wjc));
        Mat src = new Mat();
        Mat dst = new Mat();
        Utils.bitmapToMat(bitmap,src);
        Imgproc.cvtColor(src,dst,Imgproc.COLOR_BGRA2GRAY);
        Utils.matToBitmap(dst,bitmap);
        ImageView iv = (ImageView)this.findViewById(R.id.sample_img);
        iv.setImageBitmap(bitmap);
        src.release();
        dst.release();

    }

以上1-3步骤也可以用new一个View.OnClickListener的对象来实现。这时候由于不是继承监听器的接口,就不用再在前面implements View.OnClickListener了,方法如下:

1.在OnCreate函数里为控件加上事件响应

//对按钮加上事件响应
Button processBtn = (Button)findViewById(R.id.process_btn);
mCaptureButton.setOnClickListener(mOnClickListener);

2.写控件响应的事件内容的函数,这里的函数为灰度处理函数,用到了OpenCV库。

private View.OnClickListener mOnClickListener = new View.OnClickListener() {
public void onClick(View v) {
        Bitmap bitmap = (BitmapFactory.decodeResource(this.getResources(),R.drawable.wjc));
        Mat src = new Mat();
        Mat dst = new Mat();
        Utils.bitmapToMat(bitmap,src);
        Imgproc.cvtColor(src,dst,Imgproc.COLOR_BGRA2GRAY);
        Utils.matToBitmap(dst,bitmap);
        ImageView iv = (ImageView)this.findViewById(R.id.sample_img);
        iv.setImageBitmap(bitmap);
        src.release();
        dst.release();
    }
 }

你可能感兴趣的:(Android开发记录)