读书人

容易的监听器(转)

发布时间: 2012-12-21 12:03:49 作者: rapoo

简单的监听器(转)

在做Camera的时候遇到一个问题如下:

拍照功能是Camera.java里的方法实现的。笑脸检测是在Camera.java中放了个回调函数。FaceView中的检测

现在有没有笑脸的结果是FaceView.java中得到的。但是拍照方法在Camera.java中。

需要实现的就是检测到笑脸以后自动拍照。

最终用监听的方式实现的。代码如下:


先定义一个接口:

[java] view plaincopy
package com.java.listenerdemo;

public interface SmileFaceListener {
void withSmileFace();
}

FaceView中调用接口方法:
[java] view plaincopy
package com.java.listenerdemo;

public class FaceView {

private SmileFaceListener mSmileFaceListener;
private boolean checkedSmileFace ;

public FaceView(){

}

public void setCheckedSmileFace(boolean checkedSmileFace){
this.checkedSmileFace = checkedSmileFace;
}

public void setSmileFaceListener(SmileFaceListener smileFaceListener){
this.mSmileFaceListener = smileFaceListener;
}

/**
* 在非 Camera.java 的其他类中被调用检测是否有笑脸
*/
public void checkSmileFace(){

//check.....

//checkedSmileFace = true or false

if(checkedSmileFace && mSmileFaceListener != null){
mSmileFaceListener.withSmileFace();
}
}

}

在Camera.java中绑定监听器
[java] view plaincopy
package com.java.listenerdemo;

import android.app.Activity;
import android.os.Bundle;

public class Camera extends Activity implements SmileFaceListener{

private FaceView mFaceView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mFaceView = new FaceView();
mFaceView.setSmileFaceListener(this);

}

/**
* 执行拍照
*/
private void shooting(){
//caputer now
}

@Override
public void withSmileFace() {
// TODO Auto-generated method stub
shooting();
}
}

第一次写成监听这样的形式。还挺喜悦。

读书人网 >编程

热点推荐