android_基础_java回调函数

    我们经常在android中用到回调函数,比如我最近在写自定义相机,其中有这个方法surfaceChanged,这里参照了网上的朋友理解:

程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法。目的达到。在C/C++中,要用回调函数,被掉函数需要告诉调用者自己的指针地址,但在JAVA中没有指针,怎么办?我们可以通过接口(interface)来实现定义回调函数。
     假设我是程序员A,以下是我的程序a:

[java]  view plain copy print ?
  1. public class Caller  
  2. {  
  3.     public MyCallInterface mc;  
  4.   
  5.     public void setCallfuc(MyCallInterface mc)  
  6.     {  
  7.        this.mc= mc;  
  8.     }  
  9.   
  10.     public void call(){  
  11.        this.mc.method();  
  12.     }  
  13. }      
  

 

     我还需要定义一个接口,以便程序员B根据我的定义编写程序实现接口。

[java]  view plain copy print ?
  1. public interface MyCallInterface  
  2. {  
  3.     public void method();  
  4.   
  5. }  

     于是,程序员B只需要实现这个接口就能达到回调的目的了:

[java]  view plain copy print ?
  1. public class B implements MyCallInterface  
  2. {  
  3.     public void method()  
  4.     {  
  5.        System.out.println("回调");  //这里就实现了函数的回调,就好比surfaceChanged,这个是android系统定义好的接口,我们这里实现了,并进行了自己写的相应函数的调用
  6.     }  

  7.     public static void main(String args[])  
  8.     {  
  9.        Caller call = new Caller();  
  10.        call.setCallfuc(new B());  
  11.        call.call();  
  12.     }  
  13. }  

  14.   【注:我写的函数实现:
  1. public void surfaceChanged(SurfaceHolder holder, int format,
    int width, int height) {
    // 获得相机参数
    Camera.Parameters parameters = camera.getParameters();
    // 设置照片大小
     parameters.setPictureSize(width, height);
    // 设置镜头翻转
    if (android.os.Build.VERSION.SDK_INT >= 8) {
    setDisplayOrientation(camera, 90);
    } else {
    parameters.setRotation(90);
    }
    // 设置照片格式
    parameters.setPictureFormat(PixelFormat.JPEG);
    // 设置相机参数
    camera.setParameters(parameters);
    // 开始浏览
    camera.startPreview();
    }

参考: http://blog.csdn.net/fengyifei11228/article/details/5729445
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值