湖北汽车工业学院手机应用系统开发实验指导书
班号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,具体代码如下:
xmlns:android="https://www.wendangku.net/doc/e214721202.html,/apk/res/android" xmlns:tools="https://www.wendangku.net/doc/e214721202.html,/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:layout_marginTop="10dip" android:orientation="vertical" tools:context=".MainActivity"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="用户名"/> android:id="@+id/main_username" android:layout_width="fill_parent" android:layout_height="50dip" android:hint="请输入用户名:"/> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:text="密码"/> android:id="@+id/main_password" android:layout_width="fill_parent" android:layout_height="50dip" android:hint="请输入密码:" android:inputType="numberPassword"/> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:text="性别"/> android:id="@+id/main_radiogroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> android:id="@+id/main_radiobutton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="男"/> android:id="@+id/main_radiobutton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女"/> android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:text="爱好"/> android:id="@+id/main_checkbox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="体育"/> android:id="@+id/main_checkbox2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="音乐"/> android:id="@+id/main_checkbox3" android:layout_width="wrap_content" android:layout_height="wrap_content" 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(https://www.wendangku.net/doc/e214721202.html,yout.activity_main);
radiobutton1=(RadioButton)this.findViewById(R.id.main_radiobutton 1);
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_radiobutton 2);
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, temp, 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;
}
}
3.程序实现结果
(1)主活动界面如下:
(2)当点击性别按钮时,弹出对应的“男”或“女”。
(3)当选中某个复选框时,弹出对应的复选框文本,如下:
(3)当点击提交按钮时,弹出爱好+性别这些信息,如下:
注意:给出的代码只是将“爱好+性别”信息弹出,请自己将用户名和密码也追加进去,并弹出,即弹出“用户名+密码+爱好+性别”。
4.在Eclips中创建另外Android应用程序test2,修改其中res/layout目录下的布局文件main.xml,采用相对布局管理器进行布局,具体代码如下:
xmlns:android="https://www.wendangku.net/doc/e214721202.html,/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登陆窗体" android:textSize="20sp" android:layout_marginTop="10dip" android:layout_centerHorizontal="true" android:id="@+id/login_title" /> android:layout_width="fill_parent" android:layout_height="50dip" android:layout_marginTop="10dip" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:hint="用户名" android:id="@+id/login_username" android:layout_below="@id/login_title" /> android:layout_width="fill_parent" android:layout_height="50dip" android:layout_marginTop="10dip" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" 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(https://www.wendangku.net/doc/e214721202.html,yout.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)
声明Activity
(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 不足之处及下一步需改进的地方
命名有待规范。