Android(二)控件篇(下)

下边要介绍的控件,带有各种各有的监听器,用于捕捉用户动作并作出相应的响应,下边的以Button为例,总结四种监听实现方法,并进行介绍。
6、Button 按钮
按钮是与用户交互最常用的控件之一。

Android(二)控件篇(下)_第1张图片

四个按钮分别使用四种不同的点击方法。
方法一:使用内部类

  1. 新建一个MyOnClickListener类并实现View.OnClickListener接口
  2. 重写View.OnClickListener接口中的OnClick(View view)方法
  3. 给Button绑定一个监听器,并监听一个点击事件

方法二:使用匿名内部类

  1. 给Button绑定一个监听器,并监听一个点击事件
  2. 在setOnClickListener方法中直接传入一个OnClickListener对象,并实现OnClick方法

方法三:让MainActivity直接实现View.OnClickListener接口

  1. 让MainActivity直接实现View.OnClickListener
  2. 在MainActivity类中重写onClick方法
  3. 给Button绑定一个监听器,并监听一个点击事件。(注:此时setOnClickListener传入的是this)

方法四:通过布局文件中控件的属性

  1. 在activity_main.xml中给Button控件添加Android:onClick=”action”属性
  2. 在Activity中实现action方法,action方法必须满足如下三个条件:
    (1) 方法的访问修饰符必须是public
    (2)方法的名称必须跟android:onClick=”action” 中的名称完全一致
    (3)形参必须是View类型
    具体代码实现:
public class MainActivity3 extends Activity implements View.OnClickListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main5);
        Button btn_1 = findViewById(R.id.btn_1);
        Button btn_2 = findViewById(R.id.btn_2);
        Button btn_3 = findViewById(R.id.btn_3);
        //使用匿名内部类(实现OnClickListener)给button绑定一个监听器,监听点击事件
        btn_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), "按钮1", Toast.LENGTH_SHORT).show();
            }
        });
        //使用内部类(实现OnClickListener)给button绑定一个监听器,监听点击事件
        btn_2.setOnClickListener(new MyOnClickListener());
        //使用MainActivity实现OnClickListener接口给button绑定一个监听器,监听点击事件
        //注:此时setOnClickListener传入的是this
        btn_3.setOnClickListener(this);
    }
    /*注意:这里的OnClickListener是android.view.View包下的,
   不是android.content.DialogInterface包下的。*/
    class MyOnClickListener implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "按钮2", Toast.LENGTH_SHORT).show();
        }
    }
    //实现OnClickListener接口中的onClick方法
    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.btn_3:
                Toast.makeText(getApplicationContext(), "按钮3", Toast.LENGTH_SHORT).show();
                break;
        }
    }
    /**利用反射给button绑定一个监听器,监听点击事件
     * 1:方法的访问修饰符必须是public
     * 2:方法的名称必须跟android:onClick="clickBut4" 中的名称完全一致
     * 3:形参必须是View类型
     * 注:形参View其实就是Button对象本身
     * */
    public void call(View v){
        Toast.makeText(getApplicationContext(), "按钮4", Toast.LENGTH_SHORT).show();
    }
}

7、ImageButton 图片按钮
ImageButton指显示图片的按钮,它和Button的区别是:Button可以显示文本信息,有android:text属性,但没有android:src属性。但是ImageButton正好相反,没有android:text属性,但有android:src属性。如果不设置scr属,ImageButton的高度会不确定。当然两者都有android:background属性,Button想显示图片,ImageButton想有高度,也可以通过它实现,但图片变形与否就要看控件大小了。下图展示了两个Button的效果:


Android(二)控件篇(下)_第2张图片

在drawable文件夹下新建xml文件,shape标签。shape用于定义形状的。


Android(二)控件篇(下)_第3张图片

在drawable文件夹下新建xml文件,selecter标签。selecter设置按钮的点击效果,点击和不点击的两种状态
Android(二)控件篇(下)_第4张图片

效果图如下:button按钮被点击的效果,ImageButton按钮被点击的效果相同。
Android(二)控件篇(下)_第5张图片

Android自定义控件效果在drawable文件夹中的xml文件,通过background属性达到效果的背景效果。
8、toggleButton 多状态按钮

你可能感兴趣的:(Android(二)控件篇(下))