Android UI编程基础
EditText 与TextView 共舞
setOnKeyListener 事件
① 新建工程
② 在main.xml 布局中添加UI 元素:一个EditText 和一个TextView
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/><EditTextandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/myEditText"/><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/myTextView"/></LinearLayout>

③ 在mainActivity.java 主Activity 中修改代码
package zyf.EX_Ctrl_1;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class EX_Ctrl_1 extends Activity {private TextView mTextView01;private EditText mEditText01;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);/* 取得TextView、EditText */mTextView01 = (TextView) findViewById(R.id.myTextView);mEditText01 = (EditText) findViewById(R.id.myEditText);/* 设置EditText 用OnKeyListener 事件来启动*/mEditText01.setOnKeyListener(new EditText.OnKeyListener(){@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {// TODO Auto-generated method stubmTextView01.setText(mEditText01.getText().toString());return false;}});}}

处理EditText 键入事件
设计具有背景图的按钮
ImageButton 的焦点及事件处理
① 新建工程
② 准备png 图片资源clickimage.png、lostfocusimage.png、onfocusimage.png
③ 在string.xml 中添加字符串
<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">EX_Ctrl_2</string><string name="unknown">图片按钮状态:未知</string><string name="onfocus">图片按钮状态:Got Focus</string><string name="lostfocus">图片按钮状态:Lost Focus</string><string name="onclick">图片按钮状态:Got Click</string><string name="normalbutton">一般按钮</string></resources>

④ 修改main.xml 布局,添加布局元素
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#EE559611"><TextViewandroid:id="@+id/show_TextView"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/unknown"/><ImageButtonandroid:id="@+id/image_Button"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/normal_Button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/normalbutton"/></LinearLayout>

⑤ 修改mainActivity.java
package zyf.EX_Ctrl_2;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnFocusChangeListener;import android.widget.Button;import android.widget.ImageButton;import android.widget.TextView;public class EX_Ctrl_2 extends Activity {/** Called when the activity is first created. *//* 声明三个对象变量(图片按钮,按钮,与TextView) */private ImageButton mImageButton1;private Button mButton1;private TextView mTextView1;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);/* 通过findViewById 构造三个对象*/mImageButton1 = (ImageButton) findViewById(R.id.image_Button );mButton1 = (Button) findViewById(R.id.normal_Button );mTextView1 = (TextView) findViewById(R.id.show_TextView);/* 通过OnFocusChangeListener 来响应ImageButton 的onFous 事件*/mImageButton1.setOnFocusChangeListener(new OnFocusChangeListener() {public void onFocusChange(View arg0, boolean isFocused) {// TODO Auto-generated method stub/*若ImageButton 状态为onFocus 改变ImageButton 的图片并改变textView 的文字*/if (isFocused == true) {mTextView1.setText(R.string.onfocus);mImageButton1.setImageResource(R.drawable.onfocusimage);} /*若ImageButton 状态为offFocus 改变ImageButton 的图片并改变textView 的文字*/else {mTextView1.setText(R.string.lostfocus );mImageButton1.setImageResource(R.drawable.lostfocusimage);}}});/* 通过onClickListener 来响应ImageButton 的onClick 事件*/mImageButton1.setOnClickListener(new OnClickListener() {public void onClick(View v){// TODO Auto-generated method stub/*若ImageButton 状态为onClick 改变ImageButton 的图片并改变textView 的文字*/mTextView1.setText(R.string.onclick);mImageButton1.setImageResource(R.drawable.clickimage);}});/*通过onClickListener 来响应Button 的onClick 事件*/mButton1.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stub/*若Button 状态为onClick 改变ImageButton 的图片* 并改变textView 的文字*/mTextView1.setText(R.string.lostfocus);mImageButton1.setImageResource(R.drawable.lostfocusimage);}});}}

使用XML实现按钮改变焦点设置背景图
Button 的android:background 属性
设置按钮背景图片:
onFocus() 与onClick() 事件处理
Item 的android:state_focused 和android:state_pressed 属性
实现
① 新建工程
② 准备png 背景图片defaultimage.png 、onfocusimage.png、clickimage.png
③ 在main.xml 布局中添加一个ImageButton 和一个Button(作对比)
clickimage defaultimage.png onfocusimage.png
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent" android:background="#FF25CCDD"><ImageButtonandroid:id="@+id/image_Button"android:layout_width="wrap_content"android:layout_height="wrap_content"<Buttonandroid:text="Button01"android:id="@+id/Button01"android:layout_width="wrap_content"android:layout_height="wrap_content"></Button></LinearLayout>

④ 在drawable 文件夹中添加一个advancedbutton.xml 设置<selector>和<item>标签
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" ><itemandroid:state_focused="true"android:state_pressed="false"android:drawable="@drawable/onfocusimage"/><itemandroid:state_focused="true"android:state_pressed="true"android:drawable="@drawable/clickimage"/><itemandroid:state_focused="false"android:state_pressed="true"android:drawable="@drawable/clickimage"/><item android:drawable="@drawable/defaultimage"/></selector>

⑤ 设置ImageButton 的android:background 属性值
<ImageButtonandroid:id="@+id/image_Button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/advancedbutton"/>

获得焦点时
获得焦点并按下
失去焦点时
默认时
利用XML 来改变按钮背景图片
给圣诞老人的信息
Toast--Android 专属浮动小提示
① 新建工程
② 在string.xml 中添加字符串
<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">EX_Ctrl_3</string><string name="dear">亲爱的圣诞老人:</string><string name="sendmyWish">送出愿望</string><string name="yourWish">你的愿望:</string><string name="hasSend">已送达圣诞老人信箱!</string></resources>

③ 在main.xml 布局中添加UI 元素:一个TextView、一个EditView 和一个Button
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_height="wrap_content"android:layout_width="fill_parent"android:id="@+id/TextView_dear"android:text="@string/dear"></TextView><EditTextandroid:layout_height="wrap_content"android:id="@+id/EditText_Wish"android:layout_width="fill_parent"></EditText><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/Button_Send"android:text="@string/sendmyWish"android:layout_marginLeft="50px"></Button></LinearLayout>

④ 修改mainActivity.java 文件
package zyf.EX_Ctrl_3;import android.app.Activity;import android.os.Bundle;import android.text.Editable;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class EX_Ctrl_3 extends Activity {/** Called when the activity is first created. *//*声明两个对象变量(按钮与编辑文字)*/private Button mButton;private EditText mEditText;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);/*通过findViewById()取得对象*/mButton=(Button)findViewById(R.id.Button_Send);mEditText=(EditText)findViewById(R.id.EditText_Wish);/*设置onClickListener 给Button 对象聆听onClick 事件*/mButton.setOnClickListener(new Button.OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stub/*声明字符串变量并取得用户输入的EditText 字符串*/Editable Str;Str=mEditText.getText();/*使用CharSequence类getString()方法从XML中获取String*/CharSequence string2=getString(R.string.yourWish);CharSequence string3=getString(R.string.hasSend);/*使用系统标准的makeText()方式来产生Toast 信息*/Toast.makeText( EX_Ctrl_3.this,string2+Str.toString()+string3,Toast.LENGTH_LONG).show();/*清空EditText*/mEditText.setText("");}});}}

Toast--显示View的提示
Toast 显示一个ImageView
① 新建工程
② 在drawable 文件夹中添加一副png 图片:argon.png
③ 修改mainActivity.java 文件
package zyf.EX_Ctrl_3_B;import android.app.Activity;import android.os.Bundle;import android.widget.ImageView;import android.widget.Toast;public class EX_Ctrl_3_B extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/*设置主屏布局*/setContentView(R.layout.main);/*创建新Toast对象*/Toast showImageToast=new Toast(this);/*创建新ImageView对象*/ImageView imageView=new ImageView(this);/*从资源中获取图片*/imageView.setImageResource(R.drawable.argon);/*设置Toast上的View--(ImageView)*/showImageToast.setView(imageView);/*设置Toast显示时间*/showImageToast.setDuration(Toast.LENGTH_LONG);/*显示Toast*/showImageToast.show();}}

Toast 显示一个Button
① 新建工程
② 修改mainActivity.java 文件
package zyf.EX_Ctrl_3_B;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class EX_Ctrl_3_B extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/* 设置主屏布局*/setContentView(R.layout.main);/* 创建新Toast对象*/Toast showImageToast = new Toast(this);// /*新建Button对象*/Button button = new Button(this);button.setText("OK");/* 设置Toast上的View--(Button) */showImageToast.setView(button);/* 设置Toast显示时间*/showImageToast.setDuration(Toast.LENGTH_LONG);/* 显示Toast */showImageToast.show();}}

Toast 显示一个TextView
① 新建工程
② 修改mainActivity.java 文件
package zyf.EX_Ctrl_3_B;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;import android.widget.Toast;public class EX_Ctrl_3_B extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/* 设置主屏布局*/setContentView(R.layout.main);/* 创建新Toast对象*/Toast showImageToast = new Toast(this);/*新建TextView对象*/TextView text=new TextView(this);/*设置TextView内容*/text.setText("显示在Toast中的TextView");/* 设置Toast上的View--(TextView) */showImageToast.setView(text);/* 设置Toast显示时间*/showImageToast.setDuration(Toast.LENGTH_LONG);/* 显示Toast */showImageToast.show();}}

AlertDialog.Builder提示对话框
① 新建工程
② 修改mainActivity.java 文件
package zyf.EX_Ctrl_3_B;import android.app.Activity;import android.app.AlertDialog;import android.os.Bundle;public class EX_Ctrl_3_B extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);/* 设置主屏布局*/setContentView(R.layout.main);/*新建一个AlertDialog.Builder对象*/AlertDialog.Builder my_ADialog =new AlertDialog.Builder(this);/*设置标题*/my_ADialog.setTitle("Android 提示");/*设置显示消息*/my_ADialog.setMessage("AlertDialog.Builder提示对话框消息!!");/*显示*/my_ADialog.show();}}

同意条款
CheckBox 的isChecked 属性
① 创建新工程
② 在string.xml 中添加字符串
<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">Ex_Ctrl_4</string><string name="advice">请勾选我同意</string><string name="accept">您已接受同意!!</string><string name="Notaccept">您未同意!!</string><string name="allOK">全部许可</string></resources>

③ 修改main.xml 布局,添加UI 元素
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent" ><TextViewandroid:layout_height="wrap_content"android:layout_width="fill_parent"android:id="@+id/TextView_Guide"android:textSize="25px" android:text="@string/advice"></TextView><TextViewandroid:layout_height="wrap_content"android:layout_width="fill_parent"android:id="@+id/TextView_youChoiceShow"android:textSize="25px"></TextView><CheckBoxandroid:layout_height="wrap_content"android:layout_marginTop="100px"android:layout_marginLeft="90px"android:id="@+id/CheckBox_Accept" android:layout_width="120px"></CheckBox><Buttonandroid:layout_height="wrap_content"android:layout_marginLeft="90px"android:id="@+id/Button_OK"android:text="确定"android:layout_width="90px"></Button></LinearLayout>

④ 修改mainActivity.java 文件
package zyf.Ex_Ctrl_4;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.CheckBox;import android.widget.TextView;public class Ex_Ctrl_4 extends Activity {/** Called when the activity is first created. */private TextView showAdvice,yourChoiceshow;private CheckBox iAccept;private Button ok;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);/*findViewById()从资源ID获取资源对象*/showAdvice=(TextView)findViewById(R.id.TextView_Guide);yourChoiceshow=(TextView)findViewById(R.id.TextView_youChoiceShow );iAccept=(CheckBox)findViewById(R.id.CheckBox_Accept);ok=(Button)findViewById(R.id.Button_OK);/*获取XML中字符串*/CharSequence titleString=getString(R.string.allOK);/*设置复选框标题*/iAccept.setHint(titleString);/*设置复选框标题字体颜色*/iAccept.setHintTextColor(Color.RED);/*将CheckBox设置成未选中*/iAccept.setChecked(false);/*将Button设置成不可选*/ok.setEnabled(false);iAccept.setOnClickListener(new CheckBox.OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(iAccept.isChecked()){ok.setEnabled(true);yourChoiceshow.setText(R.string.accept);}else{ok.setEnabled(false);yourChoiceshow.setText(R.string.Notaccept);}}});ok.setOnClickListener(new Button.OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(iAccept.isChecked()){showAdvice.setText(R.string.accept);}}});}}

购物列表
多选项CheckBox 的应用
① 新建工程
② 在string.xml 中添加字符串
<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">Ex_Ctrl_5</string><string name="shoopingList_TextView_text" >网上购物商品清单</string><string name="yourChocieWoods_text" >您选择购买的商品:</string><string name="woods_Text_MP4">纽曼MP4</string><string name="woods_Text_musicCD">Beyond乐队CD</string><string name="woods_Text_book">Android程序员指南</string></resources>

③ 修改main.xml 布局,添加UI 元素
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_height="wrap_content"android:layout_width="fill_parent"android:id="@+id/TextView_shoppingList"android:text="@string/shoopingList_TextView_text"android:textSize="25px"></TextView><CheckBoxandroid:layout_height="wrap_content"android:id="@+id/CheckBox_MP4"android:text="@string/woods_Text_MP4"android:layout_width="180px"></CheckBox><CheckBoxandroid:layout_height="wrap_content"android:text="@string/woods_Text_musicCD"android:id="@+id/CheckBox_musicCD"android:layout_width="180px"></CheckBox><CheckBoxandroid:layout_height="wrap_content"android:text="@string/woods_Text_book"android:id="@+id/CheckBox_book"android:layout_width="180px"></CheckBox><TextViewandroid:layout_height="wrap_content"android:layout_width="fill_parent"android:id="@+id/TextView_yourChoice"android:text="@string/yourChocieWoods_text"android:textSize="20px"></TextView><TextViewandroid:layout_height="wrap_content"android:id="@+id/TextView_yourWoodsList"android:layout_width="fill_parent"android:textSize="20px"></TextView></LinearLayout>

④ 修改mainActivity.java,添加逻辑判断
package zyf.Ex_Ctrl_5;import android.app.Activity;import android.os.Bundle;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.TextView;import android.widget.CompoundButton.OnCheckedChangeListener;public class Ex_Ctrl_5 extends Activity {/** Called when the activity is first created. */private TextView showyourChoice_TextView;private CheckBox mp4_CheckBox, musicCD_CheckBox, book_CheckBox;private String showinfo;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);/* findViewById()从XML中获取资源对象*/showyourChoice_TextView = (TextView)findViewById(R.id.TextView_yourWoodsList );mp4_CheckBox = (CheckBox) findViewById(R.id.CheckBox_MP4);musicCD_CheckBox = (CheckBox) findViewById(R.id.CheckBox_musicCD);book_CheckBox = (CheckBox) findViewById(R.id.CheckBox_book );/* 为三个CheckBox设置选择状态改变事件监听器*/mp4_CheckBox.setOnCheckedChangeListener(CheckedChangeListener);musicCD_CheckBox.setOnCheckedChangeListener(CheckedChangeListener);book_CheckBox.setOnCheckedChangeListener(CheckedChangeListener);/* 从XML中获取显示信息String */showinfo = getString(R.string.yourChocieWoods_text );}/* 内部接口实现*/private OnCheckedChangeListener CheckedChangeListener = newOnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {// TODO Auto-generated method stub/* 处理选中状态改变事件,动态显示选择结果*/if (mp4_CheckBox.isChecked()) {showinfo = getString(R.string.woods_Text_MP4) + "\n";showString();} else if (musicCD_CheckBox.isChecked()) {showinfo = getString(R.string.woods_Text_musicCD) + "\n";showString();} else if (book_CheckBox.isChecked()) {showinfo = getString(R.string.woods_Text_book ) + "\n";showString();} if (mp4_CheckBox.isChecked() && musicCD_CheckBox.isChecked()) {showinfo = getString(R.string.woods_Text_MP4) + "\n"+ getString(R.string.woods_Text_musicCD ) + "\n";showString();} else if (mp4_CheckBox.isChecked() && book_CheckBox.isChecked()) {showinfo = getString(R.string.woods_Text_MP4) + "\n"+ getString(R.string.woods_Text_book ) + "\n";showString();} else if (musicCD_CheckBox.isChecked()&& book_CheckBox.isChecked()) {showinfo = getString(R.string.woods_Text_musicCD) + "\n"+ getString(R.string.woods_Text_book ) + "\n";showString();} if (mp4_CheckBox.isChecked() && musicCD_CheckBox.isChecked()&& book_CheckBox.isChecked()) {showinfo = getString(R.string.woods_Text_MP4) + "\n"+ getString(R.string.woods_Text_musicCD ) + "\n"+ getString(R.string.woods_Text_book ) + "\n";showString();} if (mp4_CheckBox.isChecked() == false&& musicCD_CheckBox.isChecked() == false&& book_CheckBox.isChecked() == false) {showyourChoice_TextView.setText("");}}public void showString() {showyourChoice_TextView.setText(showinfo);}};}

RadioButton单选
RadioGroup 组与onCheckedChanged 事件
① 新建工程
② string.xml 中添加字符串
<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">Ex_Ctrl_6</string><string name="iam_Boy">帅哥</string><string name="iamGirl">美女</string><string name="ask">请问你是??</string></resources>

③ 修改mian.xml 布局,添加UI 元素
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/ask"android:id="@+id/TextView_Ask_And_Show"android:textSize="25px"/><RadioGroupandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/RadioGroup"><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/RadioButton_Boy"android:text="@string/iam_Boy"></RadioButton><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/iamGirl"android:id="@+id/RadioButton_Gril"></RadioButton></RadioGroup></LinearLayout>

④ 修改mainActivity.java 文件
package zyf.Ex_Ctrl_6;import android.app.Activity;import android.os.Bundle;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.TextView;public class Ex_Ctrl_6 extends Activity {/** Called when the activity is first created. */private TextView answer_TextView;private RadioButton boy_RadioButton,girl_RadioButton;private RadioGroup radioGroup;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);/* findViewById()从XML中获取资源对象*/answer_TextView=(TextView)findViewById(R.id.TextView_Ask_And_Show);radioGroup=(RadioGroup)findViewById(R.id.RadioGroup);boy_RadioButton=(RadioButton)findViewById(R.id.RadioButton_Boy );girl_RadioButton=(RadioButton)findViewById(R.id.RadioButton_Gril);/*给单RadioGroup添加状态改变监听器*/radioGroup.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener(){@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// TODO Auto-generated method stubif(boy_RadioButton.isChecked()){answer_TextView.setText(R.string.iam_Boy);}else{answer_TextView.setText(R.string.iamGirl);}}});}}

RadioButton猜猜看
猜猜我是??
① 新建项目
② 准备三张png 图片
ic_menu_close_clear_cancel.png right.png wrong.png
③ 在string.xml 中添加要使用的字符串
<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">Ex_Ctrl_6</string><string name="iam_Boy">帅哥</string><string name="iamGirl">美女</string><string name="ask">猜猜我是??</string><string name="answer_Q">回答</string><string name="clean">清空</string><string name="showAnswerTitle_YES">恭喜!</string><string name="showAnswerTitle_NO">很遗憾!</string><string name="about_dialog_ok">OK</string><string name="right">您答对了!!</string><string name="wrong">哈哈,错误!</string><string name="answerIS">正确答案是:</string></resources>

④ 在main.xml 中添加UI 元素
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/ask"android:id="@+id/TextView_Ask_And_Show"android:textSize="25px"/><RadioGroupandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:id="@+id/RadioGroup"><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/RadioButton_Boy"android:text="@string/iam_Boy"></RadioButton><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/iamGirl"android:id="@+id/RadioButton_Gril"></RadioButton></RadioGroup><LinearLayoutandroid:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content" ><Buttonandroid:id="@+id/answer_The_Q_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/answer_Q"></Button><Buttonandroid:id="@+id/clean_The_Q_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/clean"></Button></LinearLayout></LinearLayout>

⑤ 修改mainActivity.java 文件
package zyf.Ex_Ctrl_6;import java.util.Random;import android.app.Activity;import android.app.AlertDialog;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.TextView;import android.widget.Toast;public class Ex_Ctrl_6 extends Activity implements Button.OnClickListener {/** Called when the activity is first created. */private TextView answer_TextView;private RadioButton boy_RadioButton, girl_RadioButton;private RadioGroup radioGroup;private Button answer_Button, clean_Button;private String[] boy_girl;private AlertDialog.Builder showRightorNot;private MenuItem exit;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);/* 结果显示对话框*/showRightorNot = new AlertDialog.Builder(this);/* findViewById()从XML中获取资源对象*/answer_TextView = (TextView) findViewById(R.id.TextView_Ask_And_Show);radioGroup = (RadioGroup) findViewById(R.id.RadioGroup);boy_RadioButton = (RadioButton) findViewById(R.id.RadioButton_Boy);girl_RadioButton = (RadioButton) findViewById(R.id.RadioButton_Gril);answer_Button = (Button) findViewById(R.id.answer_The_Q_button );clean_Button = (Button) findViewById(R.id.clean_The_Q_button);/* 答案数组*/boy_girl = new String[] { "Boy", "Girl","Boy", "Girl","Boy", "Girl","Boy", "Girl","Boy" };/* 按钮设置成不可选*/answer_Button.setEnabled(false);clean_Button.setEnabled(false);/* 给单RadioGroup添加状态改变监听器*/radioGroup.setOnCheckedChangeListener(newRadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group,int checkedId){// TODO Auto-generated method stub/* 判断显示*/if (boy_RadioButton.isChecked()) {answer_TextView.setText(R.string.iam_Boy);} else {answer_TextView.setText(R.string.iamGirl);}}});boy_RadioButton.setOnClickListener(new RadioGroup.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub/* 按钮设置成可选*/answer_Button.setEnabled(true);clean_Button.setEnabled(true);}});girl_RadioButton.setOnClickListener(new RadioGroup.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub/* 按钮设置成可选*/answer_Button.setEnabled(true);clean_Button.setEnabled(true);}});/* 设置按钮事件监听器*/answer_Button.setOnClickListener(this);clean_Button.setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (v.getId() == R.id.answer_The_Q_button) {if (boy_RadioButton.isChecked()) {checkTheAnswer("Boy");} else if (girl_RadioButton.isChecked()) {checkTheAnswer("Girl");}} if (v.getId() == R.id.clean_The_Q_button) {/* 按钮设置成未选取*/boy_RadioButton.setChecked(false);girl_RadioButton.setChecked(false);/* 按钮设置成不可选*/answer_Button.setEnabled(false);clean_Button.setEnabled(false);answer_TextView.setText(R.string.ask);}}private void checkTheAnswer(String checkstring) {// TODO Auto-generated method stub/*检测提示*/Toast.makeText(this, "检测答案…………", Toast.LENGTH_SHORT).show();/*获取随机数*/Random random = new Random();int index = random.nextInt(9);if (boy_girl[index].equals(checkstring)) {/*回答正确,设置提示对话框,显示结果*/showRightorNot.setIcon(R.drawable.right);showRightorNot.setTitle(R.string.showAnswerTitle_YES);showRightorNot.setPositiveButton(R.string.about_dialog_ok, null);showRightorNot.setMessage(R.string.right).show();Toast.makeText(this,getString(R.string.answerIS)+boy_girl[index],Toast.LENGTH_LONG).show();} else {/*回答错误,设置提示对话框,显示结果*/showRightorNot.setIcon(R.drawable.wrong);showRightorNot.setTitle(R.string.showAnswerTitle_NO);showRightorNot.setPositiveButton(R.string.about_dialog_ok, null);showRightorNot.setMessage(R.string.wrong).show();Toast.makeText(this,getString(R.string.answerIS)+boy_girl[index], Toast.LENGTH_LONG).show();}} @Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stub/*添加退出菜单*/exit=menu.add("Exit");/*设置退出菜单图片*/exit.setIcon(R.drawable.ic_menu_close_clear_cancel );return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stub/*结束Activity*/finish();return super.onOptionsItemSelected(item);}}

更多相关文章

  1. 33、Android 中子fragment控制父对象改变布局
  2. 探索Android ConstraintLayout布局
  3. Android中弹出输入法界面不影响app界面布局
  4. 剖析Android 线性布局中的权重(layout_weight)(解答疑惑)
  5. Android——界面布局

随机推荐

  1. android解决fragment嵌套ListView显示不
  2. Android(安卓)DialogFragment偶发不能清
  3. Android(安卓)Recovery 的流程分析
  4. Android系统信息获取 之七:获取IP地址和MA
  5. Android现场分析
  6. 读源码原来这么有意思
  7. WebView常见问题
  8. Android(安卓)github开源进度条类框架Smo
  9. Android的两种菜单
  10. Android原理揭秘系列之动态墙纸