Android实战(六)------Android添加按钮事件的几种方法和实例
2016-01-24 20:59
651 查看
前面我们已经学习了怎样新建一个android项目。
Android实战(五)------Myeclipse新建运行Android项目
这一节我们就通过给按钮添加事件的实例来熟悉下android开发的过程。 (因为其他控件也是类似的,只是定义和事件不同)
我这里根据 实战五的步骤新建了一个 名叫ButtonTest的项目
如下图:
下面我们开始给这个项目添加按钮 并绑定事件。 一共有5种方法。如下:
我们找到项目的 MainActivity,在里面项目自带事件onCreate中添加代码 给按钮button1绑定事件如下:
这里的R.id.button1需要在文件R中找到,而 button的定义在需要在activity_main.xml中找到。如下图:
添加完之后我们 对着项目 右键 run as ---》 android application 查看效果,如图:
点击按钮后在logcat可以看到结果:(logcat如果没找到可以在window----》android中找到)
结果如下:
让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。
结果如下:
首先需要新建一个MybuttonListener外部类 如下:
MainActivity代码如下:
结果如下:
对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx(View source)的方法的方法名。在布局文件中为button添加属性,如下代码:
这里的clickHandler 需要与 Activity中的 方法名对应,MainActivity代码如下:
Android实战(五)------Myeclipse新建运行Android项目
这一节我们就通过给按钮添加事件的实例来熟悉下android开发的过程。 (因为其他控件也是类似的,只是定义和事件不同)
我这里根据 实战五的步骤新建了一个 名叫ButtonTest的项目
如下图:
下面我们开始给这个项目添加按钮 并绑定事件。 一共有5种方法。如下:
匿名内部类作为事件监听器类
也就是我们给buttom set点击事件时 直接new 一个点击事件 给它。 这里new 出来的点击事件是没命名的 所以叫匿名内部类。我们找到项目的 MainActivity,在里面项目自带事件onCreate中添加代码 给按钮button1绑定事件如下:
Button button=(Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener(){ public void onClick(View v){ System.out.println("匿名内部类点击事件!!!"); } });
这里的R.id.button1需要在文件R中找到,而 button的定义在需要在activity_main.xml中找到。如下图:
添加完之后我们 对着项目 右键 run as ---》 android application 查看效果,如图:
点击按钮后在logcat可以看到结果:(logcat如果没找到可以在window----》android中找到)
内部类作为监听器
这个跟方法一匿名类作监听器很类似,只是 把匿名类提出去写成内部类。如下:package com.test.buttontest; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=(Button) findViewById(R.id.button1); MybuttonListener mybuttonListener=new MybuttonListener(); button.setOnClickListener(mybuttonListener); } class MybuttonListener implements OnClickListener{ public void onClick(View v){ System.out.println("内部类点击事件!!!"); } } }
结果如下:
Activity本身作为事件监听器
这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。
package com.test.buttontest; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=(Button) findViewById(R.id.button1); button.setOnClickListener(this); } @Override public void onClick(View v) { System.out.println("activity点击事件!!!"); } }
结果如下:
外部类作为监听器
这种方法与内部类作为监听器类似,只是把内部类提出来作为外部类。首先需要新建一个MybuttonListener外部类 如下:
package com.test.buttontest; import android.view.View; import android.view.View.OnClickListener; public class MybuttonListener implements OnClickListener{ public void onClick(View v){ System.out.println("外部类点击事件!!!"); } }
MainActivity代码如下:
package com.test.buttontest; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=(Button) findViewById(R.id.button1); MybuttonListener mybuttonListener=new MybuttonListener(); button.setOnClickListener(mybuttonListener); } }
结果如下:
直接绑定到标签
Android还有一种更简单的绑定事件监听器的的方式,直接在界面布局文件中为指定标签绑定事件处理方法。对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx(View source)的方法的方法名。在布局文件中为button添加属性,如下代码:
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="50dp" android:text="标签绑定" android:onClick="clickHandler" />
这里的clickHandler 需要与 Activity中的 方法名对应,MainActivity代码如下:
<span style="font-family:Tahoma, Microsoft Yahei, Simsun;color:#444444;"><span style="font-size: 14px; line-height: 21px;">package com.test.buttontest; import android.app.Activity; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void clickHandler(View source){ System.out.println("直接绑定标签点击事件!!!"); } }</span></span>结果如下:
相关文章推荐
- Android教程-fragment的问题系列
- Android的Touch Mode
- 【Android Studio】分类整理res/Layouts中的布局文件(创建子目录)
- Android实现LED数字显示
- Android之百度推送高级篇之消息【原创】
- Android 开发环境搭建
- Android开发之按键、触摸屏和手势输入专业压力測试方法
- 利用face++的人脸检测实现的眼球跟随效果
- android:layout_height与android:layout_width属性解析
- Android CPU FlameGraph
- 【Android开发】成长篇:难忘bug
- ubuntu下安装RemixOS双系统(Android x86)
- 【Android服务】制作无法销毁的Service
- android selector 中的item属性
- RecyclerView.ItemDecoration 使用总结
- android studio 断点调试
- Android清除本地数据缓存代码
- android:visibility的三种属性
- android的命令行
- 为什么要用Android Studio?