05
2017
10

Android学习-常见的UI控件 监听按钮的点击事件

onClick事件
1.Button和ImageButton都有一个onClick事件
通过自身的setOnClickListener(OnClickListener)方法添加点击事件
2.所有的控件都有一个onClick事件,不仅仅Button和ImageButton有
3.通过点击事件的监听可以实现点击按钮之后要发生什么动作

监听事件实现的几种写法
1.匿名内部类的实现
2.独立类的实现
3.实现接口的方式来实现

匿名内部类实现

public class FirstActivity extends AppCompatActivity {
    private static final String TAG = "FirstActivity";
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //将布局xml文件引入到activity中来
        setContentView(R.layout.first_layout);
        /* * 1.初始化当前所需要控件,如何初始化一个控件? * findViewById——返回的是个View对象 * findViewById——通过R文件中的Id来找View * * 2.设置Button的监听器,通过监听器实现我们点击Button要操作的事情 * */
        Button button = (Button) findViewById(R.id.button);

        /* * 1.监听事件通过第一种方式实现(匿名内部类) * */
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                Toast.makeText(FirstActivity.this,"点击了button",Toast.LENGTH_SHORT).show();
            }
        });

    }

}

独立类的实现
这种方式可以使得所有继承了独立类的button被点击了以后,实现相同的操作,例如改变button的透明度,只要加一句super.onClick(view);即可

public class FirstActivity extends AppCompatActivity {
    private Button bt1;
    private Button bt2;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //将布局xml文件引入到activity中来
        setContentView(R.layout.first_layout);

        bt1 = (Button)findViewById(R.id.button);
        bt2 =(Button)findViewById(R.id.button2);

        //匿名内部类写法
       /* bt1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Toast.makeText(FirstActivity.this,"button1被点击了",Toast.LENGTH_SHORT).show(); } });*/
        //点击事件外部类的写法和作用
        bt1.setOnClickListener(new MyOnclickListener(){
            public void onClick(View view){
                //调用父类的onClick
                super.onClick(view);
                Toast.makeText(FirstActivity.this,"button1被点击了",Toast.LENGTH_SHORT).show();
            }
        });
        bt2.setOnClickListener(new MyOnclickListener(){
            public void onClick(View view){
                //调用父类的onClick
                super.onClick(view);
                Toast.makeText(FirstActivity.this,"button2被点击了",Toast.LENGTH_SHORT).show();
            }
        });

    }

}
/* * OnclickListener是一个接口 * */
class MyOnclickListener implements View.OnClickListener{
    public void onClick(View view) {
        //让所有使用当前外部类的点击事件实现同一个同坐,改变button的透明度
        view.setAlpha(0.5f);
        System.out.println("button被点击了");
    }
}

实现接口的方式来实现

public class FirstActivity extends AppCompatActivity implements View.OnClickListener{

    private ImageButton ibtu;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //将布局xml文件引入到activity中来
        setContentView(R.layout.first_layout);

        ibtu = (ImageButton)findViewById(R.id.imageButton);
        ibtu.setOnClickListener(this);
    }

    public void onClick(View view) {
        Log.d("FirstActivity","onClick: ");
    }
}
上一篇:【Android】の基础——ListView和RecyclerView缓存机制 下一篇:Android自定义View与添加点击事件