Android回调的使用方式
来源:互联网 发布:设有一个二维数组a m n 编辑:程序博客网 时间:2024/06/05 15:07
个人代码记录
转载请注明出处:http://blog.csdn.net/etong_123/article/details/17428571
用多了Android的OnClickListener,OnTouchListener 等回调方法,打算自己动手写一个。
C++实现回调的方式是用指针,java当然也有自己实现回调的方式。先定义接口
这里定义一个动作类
public interface MyAction {public void dosomething();}
定义实现类
这里用MyAction作为参数
public class Test {public void call(MyAction ma) {Log.i("etong", "befor doing");ma.dosomething();Log.i("etong", "after doing");}}
在MainActivity中实现
dosomething的方法由调用者来实现
public class MainActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Test test = new Test();test.call(new MyAction() {@Overridepublic void dosomething() {// TODO Auto-generated method stubLog.i("etong", "doing");}});}}
打印结果
只是个简单的例子,了解一下java回调的写法。
顺手写了个Android进度条更新,用了回调的写法。直接贴代码
接口 定义更新进度条抽象方法
public interface ProgressListener {public void onProgress(int index);}
实现类 通过线程累加进度条的参数
public class ProgressHandler {private ProgressListener progressListener;private int index = 0;public ProgressHandler() {}public void setProgress(ProgressListener p) {this.progressListener = p;}public void update() {// 用线程增加indexnew Thread() {@Overridepublic void run() {// TODO Auto-generated method stubsuper.run();while (index < 100) {index++;//通知进度条更新进度progressListener.onProgress(index);try {Thread.sleep(100);} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}}}.start();}}
Activity代码
public class TestActivity extends Activity {private ProgressBar progressBar;private ProgressHandler progressHandler;private Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_test);progressBar = (ProgressBar) findViewById(R.id.progressBar1);progressHandler = new ProgressHandler();progressHandler.setProgress(new ProgressListener() {@Overridepublic void onProgress(int index) {// TODO Auto-generated method stubprogressBar.setProgress(index);}});btn = (Button) findViewById(R.id.button1);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubprogressHandler.update();}});}}
Xml代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".TestActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start" /> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
通过回调的方式通知进度条更新。
0 0
- Android回调的使用方式
- Android 广播的使用方式
- android:碎片的使用方式
- android----popuwindow的使用,自定义的方式
- Android:页面销毁时DialogFragment使用回调的一种方式和思考
- Android设置监听回调的方式
- android使用pull的方式解析xml
- Android中BindService方式使用的理解
- Android中BindService方式使用的理解
- android 使用gdb调试的方式
- Android中BindService方式使用的理解
- Android中BindService方式使用的理解
- Android中BindService方式使用的理解
- Android中BindService方式使用的理解
- Android使用binder访问service的方式
- Android中BindService方式使用的理解
- Android中BindService方式使用的理解
- Android中BindService方式使用的理解
- 最长有效括号的长度--英雄会
- ZOJ-1799
- HttpClient的超时用法小记
- Jquery实现模态窗口—simplemodal
- Android菜单详解(三)——SubMenu和IconMenu
- Android回调的使用方式
- 【cocos2D-x学习】17.手势识别
- ios KVO
- 非常实用。。。c++函数sort函数运用(排序运用)
- .NET中出现 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集
- 设备模型
- 服务器负载均衡的几种部署方式
- C语言中extern的用法(转摘)
- 如何判断一个点是否在不规则图形内部?