`

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);
}
}
分享到:
评论

相关推荐

    Android 基础UI编程4

    本节我们将深入探讨“Android基础UI编程4”,主要关注Android中的布局管理、控件使用以及自定义UI组件等内容。 一、Android布局管理 Android提供多种布局管理器,如LinearLayout、RelativeLayout、ConstraintLayout...

    android:基础UI编程3(中文)

    根据给定的文件信息,以下是对“Android:基础UI编程3(中文)”这一主题的知识点详细解析: ### Android UI 编程基础 #### 一、理解Android UI编程 Android UI编程是开发移动应用时不可或缺的一部分,它涉及到创建...

    新编Android 基础UI编程 PDF文件

    本教程《新编Android 基础UI编程》聚焦于为初学者提供Android UI编程的基础知识,帮助开发者构建出美观且易用的应用界面。下面将详细阐述Android UI编程的关键概念和实践技巧。 1. **XML布局文件**:Android UI主要...

    Android_基础UI编程[1].pdf

    Android编程基础UI教程主要涵盖了Android应用程序中用户界面(UI)的构建和定制。UI是任何应用程序的核心部分,因为它直接影响到用户的交互体验。以下是对PDF文档中提到的关键知识点的详细解释: 1. **隐藏标题和...

    Android开发笔记——UI基础编程

    这份"Android开发笔记——UI基础编程"的资料集包含了两部分:新版Android开发教程+笔记七--基础UI编程1.pdf和新版Android开发教程+笔记七--基础UI编程2.pdf,将深入讲解Android应用程序中用户界面的设计与实现。...

    老罗Android教程:六.常用UI编程源代码

    常用UI编程源代码】是一个专为Android开发者设计的资源集合,旨在帮助初学者和有经验的开发者理解并掌握Android平台上的常见用户界面(UI)编程技术。本教程包含了20多个不同的源代码示例,这些示例涵盖了Android UI...

    新编Android基础UI编程[PDF].rar

    《新编Android基础UI编程》是一本专注于Android用户界面(UI)开发的教程,适合初学者及有一定经验的开发者深入理解Android UI系统。该书涵盖了从基本的布局管理器到高级自定义视图的设计,旨在帮助读者掌握创建美观...

    Android基础UI编程.pdf

    以下是一些关于Android基础UI编程的知识点: 1. **标题和状态栏的隐藏**: - Android中的Activity可以通过调用`requestWindowFeature()`方法来控制标题栏和状态栏的显示与隐藏。 - 要隐藏标题栏,可以在`...

    APP开发教程 Java Android移动端开发 2、Android UI编程(1) 共33页.pptx

    在本节APP开发教程中,我们将深入探讨Android UI编程,主要关注以下几个方面: 1. **Android工程结构分析**: Android应用程序通常由多个组件构成,包括活动(Activity)、服务(Service)、广播接收器...

    android网络编程基础

    本节将深入探讨Android网络编程的基础知识,主要围绕Java网络编程这一核心概念展开。 首先,理解Android网络编程的基础概念至关重要。在Android中,网络操作通常在后台线程中执行,以避免阻塞主线程导致应用无响应...

    android 应用 UI 编程大全

    在Android应用开发中,UI编程是一个核心部分,它涉及到用户界面设计、布局控制、动画效果以及资源使用等多个方面。接下来,我们将会从提供的文件信息中提取相关的知识点进行详细说明。 首先,标题《android 应用 UI...

    Android UI demo(远程医疗)

    在Android平台上,UI设计与实现是构建任何应用的基础,尤其是对于远程医疗这样的应用程序,用户界面的设计至关重要,因为它直接影响到用户的体验和效率。本项目“Android UI demo(远程医疗)”主要展示了如何在...

    新版Android开发教程-基础UI编程

    新版Android开发教程-基础UI编程

    Android开发教程-基础UI编程

    本教程将深入探讨Android的基础UI编程,包括各种常用的UI控件及其用法。 首先,我们从最基本的控件开始。TextView是Android中最常见的控件,用于显示文本。你可以设置文字内容、字体样式、颜色等属性。比如,通过`...

    《Android UI基础教程》英文版

    通过以上内容,我们可以了解到《Android UI基础教程》这本书旨在帮助读者全面了解Android用户界面设计的基本原理和技术要点。无论是对于刚接触Android开发的新手还是有一定经验的开发者来说,这本书都能够提供宝贵的...

    老罗android视频常用UI编程(源码1-33集全)

    "老罗android视频常用UI编程"是一系列深入讲解Android UI编程的教程,包含了从基础到进阶的全方位知识。这个资源提供了1-33集的完整视频源码,为开发者提供了丰富的实践材料,旨在帮助开发者熟练掌握Android UI的...

Global site tag (gtag.js) - Google Analytics