Android中view的点击事件的四种实现方式
Android程序中,设置View的点击事件监听共有四种,分别是:
1)在布局文件中为控件设置onClick属性指定点击方法;
2)创建一个内部类实现OnClickListener接口并重写onClick()方法 , 之后需要为控件设置setOnClickListener(Listener listener);
3)创建匿名内部类,即在为控件设置监听时直接创建一个OnClickListener实例,不为该实例指定名称。
4)主类中实现OnclickListener接口,然后重写onClick()方法;
实例
利用view的点击事件的四种监听方式实现如下图所示的简单计算器
参考代码
布局代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#87CEEB">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/my_edit1"
android:text="0"
android:inputType="numberDecimal" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/my_edit2"
android:text="0"
android:inputType="numberDecimal" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/my_text"
android:textSize = "20sp"
android:textColor ="#0000FF"
android:text = "= " />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt_add"
android:text="加(+)"
android:onClick="add"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt_sub"
android:text="减(-)" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="乘(×)"
android:id="@+id/bt_muti" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="除(÷)"
android:id="@+id/bt_div" />
</LinearLayout>
java代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
TextView tText;
EditText tEdit_1,tEdit_2;
Button btAdd,btSub,btMuti,btDiv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.jisuanqi);
tText = (TextView)findViewById(R.id.my_text);
tEdit_1 = (EditText)findViewById(R.id.my_edit1);
tEdit_2 = (EditText)findViewById(R.id.my_edit2);
btAdd = (Button)findViewById(R.id.bt_add);
btSub = (Button)findViewById(R.id.bt_sub);
btMuti = (Button)findViewById(R.id.bt_muti);
btDiv = (Button)findViewById(R.id.bt_div);
btSub.setOnClickListener(new mysub());
btMuti.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String s1=tEdit_1.getText().toString();
String s2=tEdit_2.getText().toString();
if(view==btMuti) {
computer(s1,s2,'*');
}
}
});
btDiv.setOnClickListener(this);
}
@Override
public void onClick(View view) {
String s1=tEdit_1.getText().toString();
String s2=tEdit_2.getText().toString();
if(view== btDiv) {
computer(s1,s2,'/');
}
}
class mysub implements View.OnClickListener{
@Override
public void onClick(View view) {
String s1=tEdit_1.getText().toString();
String s2=tEdit_2.getText().toString();
if(view==btSub) {
computer(s1,s2,'-');
}
}
}
public void add(View view) {
String s1=tEdit_1.getText().toString();
String s2=tEdit_2.getText().toString();
if(view==btAdd) {
computer(s1,s2,'+');
}
}
void computer(String s1,String s2,char op)
{ double n1=1,n2=1,result=1;
n1 =Double.parseDouble(s1);
n2 =Double.parseDouble(s2);
switch(op) {
case '+': result = n1+n2; break;
case '-': result = n1-n2; break;
case '*': result = n1*n2; break;
case '/': result = n1/n2; break;
}
tText.setText("="+result);
}
}