`

Android UI编程基础3

阅读更多
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"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/myEditText"/>
<TextView
android: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. */
@Override
public 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(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
mTextView01.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">
<TextView
android:id="@+id/show_TextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/unknown"
/>
<ImageButton
android:id="@+id/image_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android: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;
@Override
public 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(){
@Override
public 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">
<ImageButton
android:id="@+id/image_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
<Button
android: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" >
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/onfocusimage"
/>
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/clickimage"
/>
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/clickimage"
/>
<item android:drawable="@drawable/defaultimage"/>
</selector>

⑤ 设置ImageButton 的android:background 属性值
<ImageButton
android: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"
>
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/TextView_dear"
android:text="@string/dear"></TextView>
<EditText
android:layout_height="wrap_content"
android:id="@+id/EditText_Wish"
android:layout_width="fill_parent"></EditText>
<Button
android: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;
@Override
public 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(){
@Override
public 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. */
@Override
public 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. */
@Override
public 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. */
@Override
public 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. */
@Override
public 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" >
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/TextView_Guide"
android:textSize="25px" android:text="@string/advice"></TextView>
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/TextView_youChoiceShow"
android:textSize="25px"></TextView>
<CheckBox
android:layout_height="wrap_content"
android:layout_marginTop="100px"
android:layout_marginLeft="90px"
android:id="@+id/CheckBox_Accept" android:layout_width="120px"></CheckBox>
<Button
android: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;
@Override
public 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(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(iAccept.isChecked()){
ok.setEnabled(true);
yourChoiceshow.setText(R.string.accept);
}else{
ok.setEnabled(false);
yourChoiceshow.setText(R.string.Notaccept);
}
}
});
ok.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(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"
>
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/TextView_shoppingList"
android:text="@string/shoopingList_TextView_text"
android:textSize="25px"></TextView>
<CheckBox
android:layout_height="wrap_content"
android:id="@+id/CheckBox_MP4"
android:text="@string/woods_Text_MP4"
android:layout_width="180px"></CheckBox>
<CheckBox
android:layout_height="wrap_content"
android:text="@string/woods_Text_musicCD"
android:id="@+id/CheckBox_musicCD"
android:layout_width="180px"></CheckBox>
<CheckBox
android:layout_height="wrap_content"
android:text="@string/woods_Text_book"
android:id="@+id/CheckBox_book"
android:layout_width="180px"></CheckBox>
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/TextView_yourChoice"
android:text="@string/yourChocieWoods_text"
android:textSize="20px"></TextView>
<TextView
android: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;
@Override
public 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 = new
OnCheckedChangeListener() {
@Override
public 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">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/ask"
android:id="@+id/TextView_Ask_And_Show"
android:textSize="25px"/>
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/RadioGroup">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/RadioButton_Boy"
android:text="@string/iam_Boy"></RadioButton>
<RadioButton
android: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;
@Override
public 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(new
RadioGroup.OnCheckedChangeListener(){
@Override
public 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);
}
}
});
}
}

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"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/ask"
android:id="@+id/TextView_Ask_And_Show"
android:textSize="25px"/>
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/RadioGroup">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/RadioButton_Boy"
android:text="@string/iam_Boy">
</RadioButton>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/iamGirl"
android:id="@+id/RadioButton_Gril">
</RadioButton>
</RadioGroup>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/answer_The_Q_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/answer_Q"
></Button>
<Button
android: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;
@Override
public 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(new
RadioGroup.OnCheckedChangeListener() {
@Override
public 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() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/* 按钮设置成可选*/
answer_Button.setEnabled(true);
clean_Button.setEnabled(true);
}
});
girl_RadioButton.setOnClickListener(new RadioGroup.OnClickListener() {
@Override
public 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);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (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();
}
} @Override
public 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);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
/*结束Activity*/
finish();
return super.onOptionsItemSelected(item);
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics