0x01 Android入坑之Button

作者: 丿feng | 来源:发表于2019-02-06 00:11 被阅读1次

0x00 Button 监听

Button监听有三种方法,分别是匿名内部类、外部类以及接口方式
通过OnClickListener监听

1.匿名内部类监听Button
package com.feng.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;

public class MainActivity extends AppCompatActivity {

    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button1);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                System.out.println("button");
            }
        });
    }
}
2. 外部类监听Button

使用外部类在多个按钮有相同复杂功能的情况下可以使代码复用

package com.feng.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;

public class MainActivity extends AppCompatActivity {

    private Button button;
    private ImageButton imageButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button1);
        imageButton = (ImageButton) findViewById(R.id.imageButton1);

        button.setOnClickListener(new Listener());
        imageButton.setOnClickListener(new Listener(){
            @Override
            public void onClick(View view) {
                super.onClick(view);
                System.out.println("ImageButton");
            }
        });

    }

    class Listener implements View.OnClickListener{

        @Override
        public void onClick(View view) {
            System.out.println("button");
        }
    }
}
3. 使用接口监听Button
package com.feng.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button1);
    }

    @Override
    public void onClick(View view) {
        System.out.println("button");
    }
}

0x01 Button&&ImageButton

0x02 ToggleButton

ToggleButton 有两种状态(开、关),并且需要为两种状态设置显示的文本,通过OnCheckedChangeListener监听
android:textOff=""
android:textOn=""
android:checked="false"
XML文件

  <ToggleButton
        android:text="ToggleButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/toggleButton1" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/toggleButton1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/imageView1" />

Java代码

package com.feng.learn3;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {

    private ToggleButton toggleButton;
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        toggleButton = (ToggleButton) findViewById(R.id.toggleButton1);
        imageView = (ImageView) findViewById(R.id.imageView1);
        toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                imageView.setBackgroundResource(b?R.drawable.my_true:R.drawable.my_false);
            }
        });
    }
}

0x03 CheckBox

CheckBox 有两种状态(true || false)表示选中\未选中,通过OnCheckedChangeListener监听
android:text=""
android:checked="false"
XML文件

<CheckBox
        android:text="CheckBox"
        android:checked="false"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="27dp"
        android:id="@+id/checkBox1" />

Java代码

package com.feng.learn3;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.CheckBox;
import android.widget.CompoundButton;

public class MainActivity extends AppCompatActivity {

    private CheckBox checkBox;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        checkBox = (CheckBox) findViewById(R.id.checkBox1);
        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                Log.i("tag",b+"");
                if (b) {
                    Log.i("tag",checkBox.getText().toString());
                }
            }
        });

    }
}

0x04 RadioButton → RadioGroup

RadioButton:选中后不可取消
RadioGroup:RadioButton的集合,提供多选一的机制
android:orientation="horizontal"水平排布
android:orientation="vertical"垂直排布
通过setOnCheckedChangeListener监听
XML文件

<RadioGroup
        android:layout_width="150dp"
        android:layout_height="30dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/radioGroup1"
        android:orientation="horizontal">

        <RadioButton
            android:text="男"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/radioButton1"
            android:checked="true"
            android:layout_weight="1.07" />

        <RadioButton
            android:text="女"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/radioButton2"
            android:layout_weight="1" />
    </RadioGroup>

Java代码监听RadioGroup(也可直接监听RadioButton)

package com.feng.learn3;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.RadioGroup;

public class MainActivity extends AppCompatActivity {

    private RadioGroup radioGroup;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                switch (i){
                    case R.id.radioButton1:Log.i("sex:","男");break;
                    case R.id.radioButton2:Log.i("sex:","女");break;
                }
            }
        });
    }
}

相关文章

网友评论

    本文标题:0x01 Android入坑之Button

    本文链接:https://www.haomeiwen.com/subject/gotbsqtx.html