3.7简单的按钮事件——Button事件处理
Button事件由系统的ButtonOnClickListener所控制,下面示范如何在Activity下布局一个按钮,并设计一个按钮的响应函数。单击按钮,改变文字。
我们先设计按钮的布局 在main.xml
<Button
android:id="@+id/myButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/str_button1" />
设置好按钮的布局后我们就开是对这个按钮进行编程
看主程序
import android.view.View; //View显示
import android.widget.Button; //Button显示
import android.widget.TextView; //TextView显示
public class ex3_7 extends Activity {
private Button mButton1; //定义按钮变量
private TextView mTextView1; //定义Text变量
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton1 =(Button) findViewById(R.id.myButton1);
//找到myButton1 的ID
mTextView1 = (TextView) findViewById(R.id.myTextView1);
//找到myTextView1的ID
//下面是核心
mButton1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) //响应函数
{
// TODO Auto-generated method stub
mTextView1.setText("Hi, Everyone!!"); //重新设置文字。
}
});
}
}
按钮进阶实验
3.13置换文字颜色的机关——Button和TextView的交换。
实现了通过按钮实现TextView的文字的颜色变换
界面布局,我们设置一个TextView和Button就OK了。
下面主要看看主函数:
/*必须引用graphics.Color才能使用Color.*对象*/
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
/*必须引用widget.Button才能使用Button对象*/
import android.widget.Button;
/*必须引用widget.TextView才能使用TestView对象*/
import android.widget.TextView;
public class ex3_13 extends Activity {
private Button mButton;
private TextView mText;
private int[] mColors;
private int colornum;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*使用findViewById main.xml和string.xml 的button ID 和textViewID*/
mButton=(Button) findViewById(R.id.mybutton);
mText= (TextView) findViewById(R.id.mytext);
/*定义数组array定义颜色*/
mColors = new int[]
{
Color.BLACK, Color.RED, Color.BLUE,
Color.GREEN, Color.MAGENTA, Color.YELLOW
};
//定义长度统计变量
colornum=0;
/*setOnClickListener让按钮聆听事件函数*/
mButton.setOnClickListener(new View.OnClickListener()
{
/*onClick改变text的文字*/
public void onClick(View v)
{
if (colornum < mColors.length)
{
mText.setTextColor(mColors[colornum]);
colornum++;
}
else
colornum=0;
}
}
);
}
}
3.16简单计算器的应用
首先我们需要设置布局
具体如下main. xml
<EditText
android:id="@+id/mText1" //加数
android:layout_width="47px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_x="26px"
android:layout_y="52px"
/>
<EditText
android:id="@+id/mText2" //符号
android:layout_width="45px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_x="128px"
android:layout_y="51px"
/>
<TextView
android:id="@+id/mTextView2" //被加数
android:layout_width="30px"
android:layout_height="33px"
android:textSize="25sp"
android:layout_x="92px"
android:layout_y="60px"
/>
<TextView
android:id="@+id/mTextView3"
android:layout_width="18px"
android:layout_height="wrap_content"
android:text="=" //显示=号
android:textSize="25sp"
android:layout_x="189px"
android:layout_y="63px"
/>
<TextView //得数
android:id="@+id/mTextView4"
android:layout_width="91px"
android:layout_height="35px"
android:textSize="25sp"
android:layout_x="219px"
android:layout_y="61px"
/>
<Button //加法
android:id="@+id/mButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:textSize="25sp"
android:layout_x="12px"
android:layout_y="161px"
/>
<Button //减法
android:id="@+id/mButton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:textSize="25sp"
android:layout_x="85px"
android:layout_y="159px"
/>
<Button //乘法
android:id="@+id/mButton4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X"
android:textSize="25sp"
android:layout_x="158px"
android:layout_y="161px"
/>
<Button //除法
android:id="@+id/mButton5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
android:textSize="25sp"
android:layout_x="239px"
android:layout_y="161px"
/>
设计好界面布局之后,我们要马上进行设置主程序了。
主程序如下:
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
//显示必要加的宏
public class ex3_16 extends Activity {
public Button mButton2;
public Button mButton3;
public Button mButton4;
public Button mButton5;//按键声明
public EditText mEditText1;
public EditText mEditText2; //可编辑框声明
public TextView mTextView2;
public TextView mTextView4; //显示框声明
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //显示主框架
mTextView2 = (TextView) findViewById(R.id.mTextView2);
mTextView4 = (TextView) findViewById(R.id.mTextView4);
mButton2 = (Button) findViewById(R.id.mButton2);
mButton3 = (Button) findViewById(R.id.mButton3);
mButton4 = (Button) findViewById(R.id.mButton4);
mButton5 = (Button) findViewById(R.id.mButton5);
mEditText1 = (EditText) findViewById(R.id.mText1);
mEditText2 = (EditText) findViewById(R.id.mText2);
//ID号查找
mButton2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
mTextView2.setText("+"); //显示加号
String strRet = Integer.toString( Integer.parseInt(mEditText1.
getText().toString())+ Integer.parseInt
(mEditText2.getText().toString()) ); //加法运算
mTextView4.setText(strRet); //显示得数
}
});
mButton3.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
mTextView2.setText("-");
String strRet = Integer.toString( Integer.parseInt(mEditText1.
getText().toString())- Integer.parseInt
(mEditText2.getText().toString()) );
mTextView4.setText(strRet);
}
});
mButton4.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
mTextView2.setText("*");
String strRet = Integer.toString( Integer.parseInt(mEditText1.
getText().toString())* Integer.parseInt
(mEditText2.getText().toString()) );
mTextView4.setText(strRet);
}
});
mButton5.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
mTextView2.setText("/");
String strRet = Integer.toString( Integer.parseInt(mEditText1.
getText().toString())/ Integer.parseInt
(mEditText2.getText().toString()) );
mTextView4.setText(strRet);
}
});
}
}
这样我们就可以做出一个简单的计算器
按钮的另类使用
3.19 全屏幕以按钮覆盖——动态产生按钮并最大化
如果你要设计的程序Activity只有一个简单功能,且简单到一个按钮的话,那个本例可以作为一个指针。接下来的例子是拓展Progress Dialog的范例,只是这次的Layout中不使用TextView,也不需要Layout里面部署Button对象。
实际上是直接与OnCreate里面创建不太难Button1按钮对象,并指定其OnClickListener,如此以来即可以全屏幕作为按钮。
具体如下
package com.sharpandroid.ex3;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class ex3_19 extends Activity {
/*创建一个全局类成员,类型为ProgressDialog对象*/
public ProgressDialog myDialog = null;
@Override
public void onCreate(Bundle icicle)
{
super.onCreate(icicle);
/* 创建一个按钮对象*/
Button btnButton1 = new Button(this);
this.setContentView(btnButton1);
btnButton1.setText(R.string.str_btn1);
/* 为创建好了的按钮对象指定一个OnClicklistener
* 既单击会运行事件
* 并在事件处理中显示ProgressBar */
btnButton1.setOnClickListener(myShowProgressBar);
}
/** 单击按钮会运行的OnClickListener事件 */
Button.OnClickListener myShowProgressBar = new Button.OnClickListener()
{
// @Override
public void onClick(View arg0)
{
CharSequence strDialogTitle = getString(R.string.str_dialog_title);
CharSequence strDialogBody = getString(R.string.str_dialog_body);
// 显示Progress对话框
myDialog = ProgressDialog.show
(
ex3_19.this,
strDialogTitle,
strDialogBody,
true
);
new Thread()
{
public void run()
{
try
{
/*在这里写上要运行的程序片段 */
/*为了能看到显示效果以暂停3秒为例子 */
sleep(3000);
}
catch (Exception e)
{
}
// 卸载所创建的myDialog对象
myDialog.dismiss();
}
}.start(); /* 开始运行线程序 */
}
};
}