Android实现监听事件的三种方式.

来源:互联网 发布:修改表的sql语句 编辑:程序博客网 时间:2024/05/15 19:04

1,匿名内部类实现

public class MainActivity extends ActionBarActivity {        /*         * Button--可以设置文本内容的一个按钮;         * ImageButton--不可以设置文本内容,         * background及 s r c 属性添加一个image         * 当前图片上可以做一个有文本内容的图片         */    private Button loginButton;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        /*         * 1.初始化 当前所需要的控件,如何初始化一个控件         * findViewById--返回需要一个View对象;         * findViewById是如何找到相对应的View的Id?         *          * 在Android的res目录文件下所有的文件 ,都会在gen目录中         * 的R.java中自动生成相对应的信息          *          * 2.设置Button的监听器,通过监听器实现我们点击Button的效果         *          *///获取按钮资源        loginButton =(Button) findViewById(R.id.button1);        //匿名内部类来实现监听事件        loginButton.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View  v) {                //在当前onClick方法中监听点击Button的动作;                System.out.println("我的Button被点击了!");            }        });        }    }

2,外部类实现

 bt1.setOnClickListener(new MyOnClickListener(){                    @Override            public void onClick(View v){                super.onClick(v);                Toast.makeText(OutClassActivity.this, "bt1要执行的逻辑", 1).show();            }        });        bt2.setOnClickListener(new MyOnClickListener(){            @Override            public void onClick(View v){                super.onClick(v);                Toast.makeText(OutClassActivity.this, "bt2要执行的逻辑", 1).show();            }        });    }}/* * OnClickListener 是 View包下的一个接口 */class MyOnClickListener implements OnClickListener{    @Override    public void onClick(View v) {        //让所有使用当前外部类的点击事件的按钮都要做出一个动作,改变button本身的透明;        v.setAlpha(0.5f);    }}

3,接口方式实现

public class InterfaceActivity extends  Activity implements OnClickListener{    private ImageButton ibt;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_interface);        ibt  = (ImageButton) findViewById(R.id.imageButton1);        ibt.setOnClickListener(this);    }    @Override    public void onClick(View v) {        System.out.println("接口实现");;    }}

还有一种是在xml中添加控件的onClick属性

        <Button             android:layout_width="60dp"            android:layout_height="60dp"            android:id="@+id/btn_jing"            android:layout_marginLeft="10dp"            android:layout_weight="1"            android:text="#"            android:onClick="onclick"            android:background="@android:color/darker_gray"            android:gravity="center"            />    //然后在MainActivity中 构建方法         public  onclick(View v){             //在写要执行的内容;        Toast.makeText(OutClassActivity.this, "我是#号", 1).show();    }
0 0