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属性

        

你可能感兴趣的:(日记)