湖北汽车工业学院 手机应用系统开发实验指导书
班 号 T1323-4班 学 号 20120230421 姓 名 熊锐 实验地点 6教D305机房21号 完成日期 2015 年 3 月 25 日 1、2 节
实验一 UI界面设计
一、实验目的
1.掌握布局管理器的用法 2.掌握基本控件的用法
二、实验要求
1.理解布局管理器相关属性的含义,并熟练使用之 2.熟练使用TextView常用属性 3.熟练使用EditText常用属性
4.熟练使用Button常用属性以及View.OnClickListener监听器的用法
5.熟练使用CheckBox常用属性以及其CompoundButton.OnCheckedChangeListener监听器的用法
6.熟练使用RadioGroup、RadioButton常用属性和RadioGroup.OnCheckedChangeListener监听器的用法
三、实验步骤
1.在Eclips中创建Android应用程序test1,修改其中res/layout目录下的布局文件main.xml,具体代码如下:
android:layout_marginTop=\"10dip\" android:orientation=\"vertical\" tools:context=\".MainActivity\" > android:layout_width=\"fill_parent\" android:layout_height=\"50dip\" android:hint=\"请输入密码:\" android:inputType=\"numberPassword\" /> android:text=\"音乐\" />
2.在src目录下的Activity类中,添加如下代码:
package com.example.ui_design;
import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.text.Editable;
import android.view.Menu; import android.view.View;
import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Toast;
public class MainActivity extends Activity { private RadioButton radiobutton1,radiobutton2; private CheckBox checkbox1,checkbox2,checkbox3; private Button submit;
private EditText username,password; private Intent intetn=new Intent();
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
radiobutton1=(RadioButton)this.findViewById(R.id.main_radiobutton1);
radiobutton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) { Toast.makeText(MainActivity.this, Toast.LENGTH_SHORT).show(); } });
radiobutton2=(RadioButton)this.findViewById(R.id.main_radiobutton2);
radiobutton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) { Toast.makeText(MainActivity.this, Toast.LENGTH_SHORT).show(); } });
checkbox1=(CheckBox)this.findViewById(R.id.main_checkbox1); checkbox1.setOnClickListener(new OnClickListener() {
\"
女
\
\"
男
\
@Override
public void onClick(View arg0) { Toast.makeText(MainActivity.this, \"
体
育
Toast.LENGTH_SHORT).show(); } });
checkbox2=(CheckBox)this.findViewById(R.id.main_checkbox2); checkbox2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, \"
美
术
Toast.LENGTH_SHORT).show(); } });
checkbox3=(CheckBox)this.findViewById(R.id.main_checkbox3); checkbox3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
\
\
// TODO Auto-generated method stub Toast.makeText(MainActivity.this, Toast.LENGTH_SHORT).show(); } });
submit=(Button)this.findViewById(R.id.main_submit); submit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) { // TODO Auto-generated method stub String temp=\"\";
temp=temp+username.getText().toString()+\" \"+password.getText().toString()+\" \"; if(checkbox1.isChecked()){
temp=temp+checkbox1.getText().toString()+\" \"; }
if(checkbox2.isChecked()){
temp=temp+checkbox2.getText().toString()+\" \"; }
if(checkbox3.isChecked()){
temp=temp+checkbox3.getText().toString()+\" \"; }
\"
音
乐
\
if(radiobutton1.isChecked()){
temp=temp+radiobutton1.getText().toString()+\" \"; }
if(radiobutton2.isChecked()){
temp=temp+radiobutton2.getText().toString()+\" \"; }
Toast.makeText(MainActivity.this, Toast.LENGTH_SHORT).show();
intetn.setClass(getApplicationContext(), Login.class); startActivity(intetn); } });
username=(EditText)this.findViewById(R.id.main_username); password=(EditText)this.findViewById(R.id.main_password); }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu); return true;
temp,
} }
3.程序实现结果
(1)主活动界面如下:
(2)当点击性别按钮时,弹出对应的“男”或“女”。
(3)当选中某个复选框时,弹出对应的复选框文本,如下:
(3)当点击提交按钮时,弹出爱好+性别这些信息,如下:
注意:给出的代码只是将“爱好+性别”信息弹出,请自己将用户名和密码也追加进去,并弹出,即弹出“用户名+密码+爱好+性别”。
4.在Eclips中创建另外Android应用程序test2,修改其中res/layout目录下的布局文件main.xml,采用相对布局管理器进行布局,具体代码如下:
android:layout_height=\"wrap_content\" android:text=\"登陆窗体\" android:textSize=\"20sp\" android:layout_marginTop=\"10dip\" android:layout_centerHorizontal=\"true\" android:id=\"@+id/login_title\" /> android:id=\"@+id/login_username\" android:layout_below=\"@id/login_title\" /> android:hint=\"密码\" android:id=\"@+id/login_password\" android:layout_below=\"@id/login_username\" android:inputType=\"textPassword\" />
5. 在src目录下的Activity类中,添加代码,当点击登录按钮时,将用户名和密码信
息弹出。
package com.example.ui_design;
import android.app.Activity; import android.os.Bundle; import android.view.View;
import android.view.View.OnClickListener; import android.widget.Button;
import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast;
public class Login extends Activity { private Button submit;
private EditText username,password;
@Override
protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.login);
submit=(Button)this.findViewById(R.id.login_submit);
username=(EditText)this.findViewById(R.id.login_username); password=(EditText)this.findViewById(R.id.login_password); submit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub Toast.makeText(Login.this, \"用户名:\"+username.getText().toString()+\"密码:\"+password.getText().toString(), Toast.LENGTH_SHORT).show(); } }); } }
四、习题
1.Android应用程序中,res目录包含哪些子目录?每个子目录的作用是什么?怎样在Java程序中引用其中的某个图片文件或某个字符串? Drawable-xxx-----------------------------存储各种分辨率的图片 Layout------------------------------------存放布局文件 Values------------------------------------存放常量文件 Menu-------------------------------------界面选项菜单XML文件 通过R文件引用如R.String.xxx、R.drawable.xxx;
2.AndroidManifest.xml中,以下属性表示什么意思?
(1) (2) 3. 属性gravity与layout_gravity的区别是什么? Gravity是设置控件的子对象的对其方式,Layout_gravity是设置控件在父元素中的对其方式 4. \"@+id/btn2\"与\"@id/btn2\"的区别是什么? \"@+id/btn2\"是在R文件里面定义一个id \"@id/btn2\"是引用一个已存在的id 五、实验小结 1 编程遇到的问题及解决方案 在实验过程中用智能提示的时候将CheckBox的类型写错了,如下: checkbox3=(Edittext)this.findViewById(R.id.main_checkbox3); 2 实验收获及体会 以前对layout_gravity和gravity的理解不深每次都是慢慢试验 3 不足之处及下一步需改进的地方 命名有待规范。 因篇幅问题不能全部显示,请点此查看更多更全内容