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;
}
}
});
}
}
网友评论