黑马程序员技术交流社区

标题: 点击事件的四种实现方式 [打印本页]

作者: charryxiaocai    时间: 2015-9-23 23:11
标题: 点击事件的四种实现方式

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.Toast;

public class ClickEventActivity extends Activity implements View.OnClickListener {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_click_event);
                /**点击事件的四种实现方式
                 *  1. 匿名类
                 *    性能最好,可读性不强
                 *  2. 私有类
                 *    控件共享监听器
                 *  3. XMl设置属性
                 *    书写是最简洁的 ,使用时需要与xml布局结合,即xml布局与代码耦合性会强一些
                 *  4. Activity实现接口
                 *    便于分销控件请求
                 *
                 */
                //1. 通过匿名类
                Button anonymousBtn=(Button)this.findViewById(R.id.anonymous_btn);
                anonymousBtn.setOnClickListener(new View.OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                /**吐司 :瞬时显示提示信息
                                 * context:上下文  :
                                 *   作用: 1. 获取系统的资源   2. 获取系统的服务
                                 *   分类: Activity和Service的上下文      application的上下文
                                 * text:提示的文本
                                 * duration:提示信息持续的时间   short :2秒   long : 3.5秒  
                                 */
                                Toast.makeText(ClickEventActivity.this, "匿名类", Toast.LENGTH_SHORT).show();
//                                Toast.makeText(getApplicationContext(), "匿名类", Toast.LENGTH_SHORT).show();
                               
                        }
                });
                //2. 私有类实现点击事件
                Button innerBtn=(Button)findViewById(R.id.inner_btn);
                //对该控件设置点击监听事件
                innerBtn.setOnClickListener(new MyClickListener());
               
                //4. Activity实现接口
                Button activiBtn=(Button)findViewById(R.id.activity_btn);
                activiBtn.setOnClickListener(this);
                //绑定xml按钮 监听
                Button xmlBtn=(Button)findViewById(R.id.xml_btn);
                xmlBtn.setOnClickListener(this);
                       
                }
        /**
         * 3. xml布局设置android:onclick
         *   1. 方法名必须与android:onclick的属性名相同 ,而且该方法必须是public  ,传入的参数是 View
         *   2. 当设置了onClick 属性,而且对该控件设置了监听器 :则只调用监听器的监听方法 ,而xml属性的方法不会回调
         *   3. 不是所有的控件都默认支持onclick属性 ,比如 TextView,需要设置属性 android:clickable ="true"
         */
        public void byXml(View v){
               
                Toast.makeText(getApplicationContext(), "xml属性", Toast.LENGTH_SHORT).show();
        }
       
       
        //2. 私有类实现点击事件
        private class MyClickListener implements View.OnClickListener{

                @Override
                public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), "私有类", Toast.LENGTH_SHORT).show();
                        CompoundButton button;
                }
               
        }

    //4. Activity实现接口
        @Override
        public void onClick(View v) {
                switch (v.getId()) {
                case R.id.activity_btn://activty按钮
                        Toast.makeText(getApplicationContext(), "Activity实现接口", Toast.LENGTH_SHORT).show();
                        break;
                case R.id.xml_btn://xml按钮
                        Toast.makeText(getApplicationContext(), "Activity实现接口+xml", Toast.LENGTH_SHORT).show();
                        break;

                default:
                        break;
                }
               
        }
        }






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2