Android 中的接口回调
http://blog.csdn.net/wangjinyu501/article/details/22052187
//这个是View的一个回调接口
/**
* Interface definition for a callback to be invoked when a view is clicked.
*/
public interface OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
void onClick(View v);
}
下面看一个简单的例子:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener{ private Button button; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button1); button.setOnClickListener(this);
} @Override
public void onClick(View v) {
Toast.makeText(getApplication(), "OnClick", Toast.LENGTH_LONG).show();
} }
这就是一个很典型的例子,当然也可以这样写:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class SSSS extends Activity { private Button button;
private OnClickListener clickListener = new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub }
}; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
button = (Button)findViewById(R.id.button1);
button.setOnClickListener(clickListener);
} }
下面是View类的setOnClickListener方法,把和回调相关代码贴出来。什么贴它呢,因为Button继承于TextView,而TextView继承于View,在View里面处理的回调:
/**
*
*/
public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {
/**
* Listener used to dispatch click events.
* This field should be made private, so it is hidden from the SDK.
* {@hide}
*/
protected OnClickListener mOnClickListener; /**
*
* Register a callback to be invoked when this view is clicked. If this view is not
* clickable, it becomes clickable.
*
* @param l The callback that will run
*
* @see #setClickable(boolean)
*/ public void setOnClickListener(OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
mOnClickListener = l;
} /**
* Call this view's OnClickListener, if it is defined.
*
* @return True there was an assigned OnClickListener that was called, false
* otherwise is returned.
*/
public boolean performClick() {
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); if (mOnClickListener != null) {
playSoundEffect(SoundEffectConstants.CLICK); mOnClickListener.onClick(this);
return true;
} return false;
}
}
final Dialog dialog = new Dialog(this, R.style.MyDialogStyle);
dialog.setContentView(R.layout.dialog_exit_train);
dialog.show();
ImageButton ib_affirm = (ImageButton) dialog
.findViewById(R.id.dialog_exit_ib_affirm);
ImageButton ib_cancel = (ImageButton) dialog
.findViewById(R.id.dialog_exit_ib_cancel); ib_affirm.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { saveUserData();
dialog.dismiss();
TestActivity.this.finish();
}
}); ib_cancel.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { dialog.dismiss();
}
});
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextPaint;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView; import com.fanfou.app.opensource.R; /**
*
*
*/
public class AlertInfoDialog extends Dialog implements View.OnClickListener {
//创建接口
public static interface OnOKClickListener {
public void onOKClick();
} private final Context mContext;
private TextView mTitleView;
private TextView mTextView; private Button mButtonOk;
private CharSequence mTitle; private CharSequence mText;
//生命接口对象
private OnOKClickListener mClickListener; public AlertInfoDialog(final Context context, final String title,
final String text) {
super(context, R.style.Dialog);
this.mContext = context;
this.mTitle = title;
this.mText = text;
} private void init() {
setContentView(R.layout.dialog_alert); this.mTitleView = (TextView) findViewById(R.id.title);
final TextPaint tp = this.mTitleView.getPaint();
tp.setFakeBoldText(true);
this.mTitleView.setText(this.mTitle); this.mTextView = (TextView) findViewById(R.id.text);
this.mTextView.setText(this.mText); this.mButtonOk = (Button) findViewById(R.id.button_ok);
this.mButtonOk.setOnClickListener(this); } @Override
public void onClick(final View v) {
final int id = v.getId();
switch (id) {
case R.id.button_ok:
cancel();//调用
if (this.mClickListener != null) {
this.mClickListener.onOKClick();
}
break;
default:
break;
}
} @Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setBlurEffect();
init();
} protected void setBlurEffect() {
final Window window = getWindow();
final WindowManager.LayoutParams lp = window.getAttributes();
// lp.alpha=0.8f;
lp.dimAmount = 0.6f;
window.setAttributes(lp);
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
// window.addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
} public void setMessage(final CharSequence message) {
this.mText = message;
this.mTextView.setText(this.mText);
} public void setMessage(final int resId) {
this.mText = this.mContext.getResources().getText(resId);
this.mTextView.setText(this.mText);
}
//设置监听器 也就是实例化接口
public void setOnClickListener(final OnOKClickListener clickListener) {
this.mClickListener = clickListener;
} @Override
public void setTitle(final CharSequence title) {
this.mTitle = title;
this.mTitleView.setText(this.mTitle);
} @Override
public void setTitle(final int resId) {
this.mTitle = this.mContext.getResources().getText(resId);
this.mTitleView.setText(this.mTitle);
} }
方式和上面介绍的一样,感兴趣的朋友可以自己去实现其他效果的。
Android 中的接口回调的更多相关文章
- Android中的接口回调技术
Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James ...
- JAVA回调函数ANDROID中典型的回调地方
在计算机中回调函数是指通过函数参数传递到其他代码类的,某一块可执行代码的引用,这以设计允许了底层代码调用者在高层定义的子程序. 在JAVA里面我们使用接口的方式来实现函数的回调. 回调的通俗就是:程序 ...
- android 中调用接口发送短信
android中可以通过两种方式发送短信 第一:调用系统短信接口直接发送短信:主要代码如下: //直接调用短信接口发短信 SmsManager smsManager = SmsManager.getD ...
- java中的接口回调
[接口回调]接口回调是多态的另一种体现.接口回调是指:可以把使用某一个接口的类创建的对象的引用赋给该接口声明的接口变量中,那么该接口变量就可以调用被类实现的接口中的方法.当接口变量调用被类实现的接口中 ...
- Android中定义接口的方法
1.接口方法用于回调(这里定义接口是为了使用其接口方法): public interface ICallback { public void func(); } public class Caller ...
- Android中Parcelable接口
1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...
- (转)Android中Parcelable接口用法
1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. ...
- Android中Parcelable接口用法
from: http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html Interface for classes wh ...
- Android中Parcelable接口的使用
在做开发的过程中,序列化是非常常见的.比如要将对象保存本地磁盘或者在网络上传输等.实现序列化有两种方式,一种是实现Serializable接口,第二种是实现Parcelable. Serializab ...
随机推荐
- cv:显示Linux命令运行进度
cv: 显示 cp.mv 等命令的进度 2014-07-14 By toy Posted in Apps Edit on GitHub 在 Linux 系统中 , 大多数命令从来都是信奉 “ 沉默是金 ...
- 【转】深入理解Android的startservice和bindservice--不错
原文网址:http://www.cnblogs.com/yejiurui/p/3429451.html 一.首先,让我们确认下什么是service? service就是android系 ...
- java.lang.ClassNotFoundException错误原因汇总
开发java很长时间了,还经常会遇到java.lang.ClassNotFoundException这样的错误,最近又处理了一次,起初怀疑是jdk版本比class文件的编译版本低了导致了,但是运维人员 ...
- [IOS]包含增删改查移动的tableView展示+plist文件保存+程序意外退出保存Demo
做一个tableView,包含增删改移动功能,并且修改值的时候,在按home键的时候会自动保存.如果可以的话使者保存自定义的类数组保存到plist中. 实现步骤: 1.创建一个SingleViewAp ...
- 使用Python,字标注及最大熵法进行中文分词
使用Python,字标注及最大熵法进行中文分词 在前面的博文中使用python实现了基于词典及匹配的中文分词,这里介绍另外一种方法, 这种方法基于字标注法,并且基于最大熵法,使用机器学习方法进行训练, ...
- java DI 框架spring(web)、Guice(web)、Dagger&Dagger2(android)
java DI 框架spring(web).Guice(web).Dagger&Dagger2(android) (待续...)
- C#获取时间戳的方法
获取时间戳的方法 /// <summary> /// 获取时间戳 /// </summary> /// <param name= ...
- 高可用集群(HA)配置
高可用集群(HA) 1. 准备工作 HA的心跳监测可以通过串口连接监测也可以通过网线监测,前者需要服务器有一个串口,后者需要有一个空闲网卡.HA架构中需要有一个共享的存储设备首先需要在两台机器上安装m ...
- sqlite创建数据库问题
1.<Sqlite权威指南>上说是这么创建数据库的: sqlite3 test.db 但是我写了这条语句之后出现了下面的情况(注:安装Sqlite过程见 ...) 我的sqlite3放在 ...
- 巧记--Css选择器
love ------> hate 即: a:link --> a:visited --> a:hover --> a:active a:link ...