从零开始学android:Android事件处理—单击事件

来源:互联网 发布:淘宝卖家违规几次封号 编辑:程序博客网 时间:2024/05/21 19:44

单击事件

在手机使用的过程之中,经常要使用按钮触发一些基本的操作,这个时候就可以通过单击事件完成,单击事件使用View.OnClickListener接口进行事件的处理,此接口定义如下。

public static interface View.OnClickListener{public void onClick(View v) ;}


范例一:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <EditText         android:id="@+id/myed"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="请输入您的姓名"        />    <Button         android:id="@+id/mybut"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="显示输入信息"        />    <TextView         android:id="@+id/mytext"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="输入的信息是:"        /></LinearLayout>

代码文件:

package com.richard.clicklistener;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {private TextView showView = null;private EditText edit = null;private Button but = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.but = (Button) super.findViewById(R.id.mybut);this.showView = (TextView) super.findViewById(R.id.mytext);this.edit = (EditText) super.findViewById(R.id.myed);but.setOnClickListener(new ShowListener());//定义监听}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}private class ShowListener implements OnClickListener {public void onClick(View v){String info = edit.getText().toString();//取得文本框输入内容showView.setText("输入的内容是:" + info);}}}


范例二:

简单的四则运算

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >        <EditText             android:id="@+id/myeda"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text=" 输入第一个数字..."            />        <TextView             android:id="@+id/note"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            />        <EditText             android:id="@+id/myedb"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="输入第二个数字..."            />        <TextView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text=""            />        <TextView             android:id="@+id/mytext"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="计算结果..."            />    </LinearLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="vertical" >    <Button         android:id="@+id/mybutadd"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="+"        />    <Button         android:id="@+id/mybutsub"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="-"        />    <Button         android:id="@+id/mybutmul"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="*"        />    <Button         android:id="@+id/mybutdiv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="/"        />    </LinearLayout>    </LinearLayout>

package com.richard.size;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {private TextView showView = null;private TextView note = null;private EditText editnum1 = null;private EditText editnum2 = null;private Button butAdd = null;private Button butSub = null;private Button butMul = null;private Button butDiv = null;private int num1 = 0;private int num2 = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.showView = (TextView) super.findViewById(R.id.mytext);//取得文本显示组件this.editnum1 = (EditText) super.findViewById(R.id.myeda);//取得文本编辑组建this.editnum2 = (EditText) super.findViewById(R.id.myedb);//取得文本编辑组件this.butAdd = (Button) super.findViewById(R.id.mybutadd);this.butSub = (Button) super.findViewById(R.id.mybutsub);this.butMul = (Button) super.findViewById(R.id.mybutmul);this.butDiv = (Button) super.findViewById(R.id.mybutdiv);this.note = (TextView) super.findViewById(R.id.note);this.butAdd.setOnClickListener(new AddListener());//定义监听this.butSub.setOnClickListener(new SubListener());//定义监听this.butMul.setOnClickListener(new MulListener());//定义监听this.butDiv.setOnClickListener(new DivListener());//定义监听this.editnum1.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){MainActivity.this.editnum1.setText("");}});this.editnum2.setOnClickListener(new OnClickListener(){public void onClick(View v){MainActivity.this.editnum2.setText("");}});}class AddListener implements OnClickListener{public void onClick(View v){MainActivity.this.num1 = Integer.parseInt(MainActivity.this.editnum1.getText().toString());MainActivity.this.num2 = Integer.parseInt(MainActivity.this.editnum2.getText().toString());MainActivity.this.note.setText(" + ");MainActivity.this.showView.setText(String.valueOf(num1 + num2)//设置文本显示组件);}}class SubListener implements OnClickListener{public void onClick(View v){MainActivity.this.num1 = Integer.parseInt(MainActivity.this.editnum1.getText().toString());MainActivity.this.num2 = Integer.parseInt(MainActivity.this.editnum2.getText().toString());MainActivity.this.note.setText(" - ");MainActivity.this.showView.setText(String.valueOf(num1 - num2)//设置文本显示组件);}}class MulListener implements OnClickListener{public void onClick(View v){MainActivity.this.num1 = Integer.parseInt(MainActivity.this.editnum1.getText().toString());MainActivity.this.num2 = Integer.parseInt(MainActivity.this.editnum2.getText().toString());MainActivity.this.note.setText(" * ");MainActivity.this.showView.setText(String.valueOf(num1 * num2)//设置文本显示组件);}}class DivListener implements OnClickListener{public void onClick(View v){MainActivity.this.num1 = Integer.parseInt(MainActivity.this.editnum1.getText().toString());MainActivity.this.num2 = Integer.parseInt(MainActivity.this.editnum2.getText().toString());MainActivity.this.note.setText(" / ");MainActivity.this.showView.setText(String.valueOf(num1 / num2)//设置文本显示组件);}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

显示效果不是很好,所以我们改变一下屏幕显示方向。

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.richard.size"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="18" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.richard.size.MainActivity"            android:label="@string/app_name"             android:configChanges="orientation|keyboard">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>


范例三:

明文显示密码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" >    <TextView         android:id="@+id/msg"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="请输入用户密码"        /><EditText     android:id="@+id/password"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:password="true"        /><CheckBox     android:id="@+id/show"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:checked="false"    android:text="显示密码"    />    </LinearLayout>

package com.richard.showpasswd;import android.os.Bundle;import android.app.Activity;import android.text.method.HideReturnsTransformationMethod;import android.text.method.PasswordTransformationMethod;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.CheckBox;import android.widget.EditText;public class MainActivity extends Activity {private EditText password = null;private CheckBox show = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.password = (EditText) super.findViewById(R.id.password);this.show = (CheckBox) super.findViewById(R.id.show);this.show.setOnClickListener(new OnClickListenerImpl());}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}private class OnClickListenerImpl implements OnClickListener{@Overridepublic void onClick(View v){if(show.isChecked()){MainActivity.this.password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());}else{MainActivity.this.password.setTransformationMethod(PasswordTransformationMethod.getInstance());}}}}


小结

单击事件为View本身所定义的一种常见事件;
在使用单击事件可以使用内部类或者是匿名内部类的方式进行事件处理。