Android入门(2)——点击事件的三种方式监听方式
2015-07-03 10:06
651 查看
1. Button和ImageButton的onclick事件:
通过自身的.setOnClickListener(OnClickListener)方法添加点击事件。
2. 所有控件都有一个onclick的事件,通过点击事件的监听可以实现点击按钮之后要发生的动作。监听事件实现的三种写法:匿名内部类的实现、独立类的实现、实现接口的方式来实现。
2) 通过MyOnClickListener来实现OnClickListener。
3) 对于bt1而言,点击时不仅调用自身的onClick事件:
Toast.makeText(MainActivity.this, "bt1要执行的逻辑", 1).show();
同时还调用父类的onClick事件:
super.onClick(arg0);
由它去执行外部类MyOnClickListener中的onClick事件。
4) 源代码:
外部类监听的方式的好处是:当有多个Button控件拥有同样的父类外部类时,有共同点,也有不同点:
通过这种方式可以让不同的按钮在点击后有父类相同的反映,同时也有自己特有的反映。
随后会在该函数里面自动添加:
步骤二:绑定按钮。
源代码:
通过自身的.setOnClickListener(OnClickListener)方法添加点击事件。
2. 所有控件都有一个onclick的事件,通过点击事件的监听可以实现点击按钮之后要发生的动作。监听事件实现的三种写法:匿名内部类的实现、独立类的实现、实现接口的方式来实现。
3. 匿名内部类的实现:
就是在setOnclickListener()函数中新建OnClickListener,然后重写它的onClick函数:loginButton=(Button)findViewById(R.id.button1); // 匿名内部类的特点就是直接在setOnClickListener上new一个匿名内部类: loginButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub System.out.println("我的Button被点击了"); } }); }
4. 外部类监听点击事件的实现:
1) OnClickListener是一个接口,不能继承(extends),可以实现(implement)。2) 通过MyOnClickListener来实现OnClickListener。
3) 对于bt1而言,点击时不仅调用自身的onClick事件:
Toast.makeText(MainActivity.this, "bt1要执行的逻辑", 1).show();
同时还调用父类的onClick事件:
super.onClick(arg0);
由它去执行外部类MyOnClickListener中的onClick事件。
4) 源代码:
package com.example.hanxiaoxiao; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private Button bt1; private Button bt2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt1 = (Button)findViewById(R.id.button2); bt2 = (Button)findViewById(R.id.button3); // 外部类监听的特点是将实现写在外边单独来实现: bt1.setOnClickListener(new MyOnClickListener(){ @Override public void onClick(View arg0) { // 调用父类的OnClick事件。 super.onClick(arg0); // 自己本身的OnClick事件。 Toast.makeText(MainActivity.this, "bt1要执行的逻辑",1).show(); } }); } } // MyOnClickListener属于父类。 class MyOnClickListener implements OnClickListener{ @Override public void onClick(View arg0) { Log.i("tag","父类的onClick事件"); } }
外部类监听的方式的好处是:当有多个Button控件拥有同样的父类外部类时,有共同点,也有不同点:
package com.example.hanxiaoxiao; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private Button bt1; private Button bt2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt1 = (Button)findViewById(R.id.button2); bt2 = (Button)findViewById(R.id.button3); bt1.setOnClickListener(new MyOnClickListener(){ @Override public void onClick(View arg0) { // 调用父类的OnClick事件。 super.onClick(arg0); Toast.makeText(MainActivity.this, "bt1要执行的逻辑", 1).show(); } }); bt2.setOnClickListener(new MyOnClickListener(){ @Override public void onClick(View arg0) { super.onClick(arg0); Toast.makeText(MainActivity.this, "bt2要执行的逻辑", 1).show(); } }); } } class MyOnClickListener implements OnClickListener{ @Override public void onClick(View arg0) { // 让所有使用当前外部类的点击事件的按钮都要做出一个动作,改变button本身的透明度。 arg0.setAlpha(0.5f); } }效果是点击按钮时,该按钮显示逻辑框,同时按钮透明度降低。
通过这种方式可以让不同的按钮在点击后有父类相同的反映,同时也有自己特有的反映。
5.接口方式监听按钮点击事件
步骤一:添加OnClickListener实现,然后点击add...:// 变化在这里,增加OnClickListener实现 public class MainActivity extends Activity implements OnClickListener{
随后会在该函数里面自动添加:
@Override public void onClick(View arg0) { // TODO Auto-generated method stub }当该接口绑定了一个按钮时,点击按钮的时候刚刚自动添加的这个onClick就会触发。
步骤二:绑定按钮。
// 变量实例化 imgBt = (ImageButton)findViewById(R.id.imageButton1); // 通过实现一个接口的方式实现监听事件,这里只需要this即可。这样就绑定好了 imgBt.setOnClickListener(this);
源代码:
package com.example.hanxiaoxiao;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;
// 该方法的特点是直接在当前类上实现OnClickListener,该类下会有一个对应的方法onClick,然后通过this直接访问:
// 变化在这里,增加OnClickListener实现 public class MainActivity extends Activity implements OnClickListener{
// 创建一个变量
private ImageButton imgBt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 变量实例化 imgBt = (ImageButton)findViewById(R.id.imageButton1); // 通过实现一个接口的方式实现监听事件,这里只需要this即可。这样就绑定好了 imgBt.setOnClickListener(this);}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.i("tag", "接口方式监听");
}
}
相关文章推荐
- Android连续两次后退键退出程序
- Android组件:Fragment切换后保存状态
- Android Studio 导入依赖包 出现问题的解决方法
- android当中显式intent和隐式intent的区别
- 如何预置Android 手机 APK
- Xamarin.Android开发实践(五)
- android的Jni层调用.so库(小记)
- Android xml资源文件中@、@android:type、@*、?、@+含义和区别
- Android属性动画-Property Animation(四) 组合动画
- android处理图片方法
- 百度语音识别(Baidu Voice) Android studio版本
- Android自定义DataTimePicker(日期选择器)
- ANdroid网易客户端
- 在mac上搭建Android开发环境
- android开发中使用Gson进行对象和Json之间的转换很方便
- Android studio DrawerLayout
- android开发Proguard混淆与反射
- edittext禁止android软键盘弹出
- Android SDK镜像代理
- android 应用通过友盟进行自动升级简介