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

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();

    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值