目录
2.构建Android界面 2
2.1.拖拽控件 2
2.2.使用代码 2
2.3.界面控件 3
2.3.1.用XML为布局添加控件 3
2.3.2.控件的相关说明 5
2.4.构建Android界面对应的Java代码 6
2.4.1.设置布局文件为窗口的显示内容 6
2.4.2.通过查找文件中的ID值实例化控件 6
2.4.3.getText:获取控件中的字符串 6
2.4.4.Log.d("标签","内容"):在日志窗口中输出指定字符串 6
2.4.5.定义控件的事件响应程序 7
2.5.模拟器 10
2.5.1.模拟器与真机的不同之处: 10
2.5.2.模拟器常用快捷键 10
2.5.3.模拟器使用注意事项: 11
2.6.常见错误 12
2.6.1.Eclipse打不开布局文件(SDK与ADT版本) 12
2.6.2.无法删除模拟器SDCard中的文件或日志不更新 12
2.6.3.重新运行应用程序,但模拟器没有刷新 12
2.6.4.更新布局XML文件,运行到模拟器没有刷新 13
2.6.6.使用R引用资源,提示编译错误 13
2.6.7.拷贝文件至项目中,出现编译错误 13
2.6.8. Force close(强制关闭):应用程序意外终止对话框 13
2.6.9.将日志中的信息导出 13
Android界面有两种构建方式,一种是用拖拽方式,一种是代码方式。
如图-1所示:
图-1
【示例1】用XML代码定义控件,如图-2所示:
图-2
【示例2】用Java代码在窗口中显示一个标签,该标签的显示内容为:Hello World,代码如下所示:
TextView tv=new TextView(this); //new一个标签控件
tv.setText(“Hello World”); //设置显示的文本
setContentView(tv); //将该控件设置为窗口的显示内容
Android提倡用XML的代码方式开发UI,辅之以Java代码。用Java代码创建UI,因其具有灵活性也较常见。后面的UI开发主要用XML代码方式。
在XML中添加控件如图-2所示,建议每行只写一个XML命令。
TextView是一个标签控件,用于显示提示信息。
TextView是ViewGroup的子类,该类是EditText和Button的父类。
属性名 |
Java代码 |
说明 |
Layout_height |
setHeight(int) |
设置文本框高度 |
Layout_width |
setWidth(int) |
设置文本框宽度 |
hint |
setHint(int)或setHint(Charsequence) |
设置提示的字符串 |
text |
setText(String) |
标签显示的文本信息 |
cursorVisible |
setCursorVisible(boolean) |
光标是否可见 |
editable |
设置是否允许编辑 |
|
gravity |
setGravity(int) |
设置文本框内文本的对齐方式 |
layout_gravity |
设置标签在父容器中的对齐方式 |
|
visibility |
setVisibility(int) |
是否可见(visible/invisible) |
textColor |
setTextColor |
设置文字的颜色 |
textSize |
setTextSize |
设置文字大小 |
图-3
EditText是文本编辑框控件,该控件继承自TextView类,常用来进行文本输入、编辑。
EditText是TextView类的子类,因此上表中的属性EditText同样具有。
Button控件的父类是TextView控件。作用是响应单击事件。
Button控件可显示文字,并且可将图片设置为背景。
Button是TextView类的子类,因此上表中的属性EditText同样具有。
setOnClickListener(OnClickListener);
作用:响应鼠标单击的事件,参数是一个实现了View.OnClickListener接口的对象。
该方法的具体使用以及OnClickListener接口的作用在下面有详细说明。
ImageView是View类的子类,该控件用于显示图像(包括动画)。
XML属性 |
相关方法 |
说明 |
scaleType |
setScaleType(ImageView.ScaleType) |
设置所显示的图片如何缩放或移动以适应ImageView的大小 |
src |
setImageResource(int) |
设置ImageView所显示的图片 |
图-4
图-4中的scaleType属性有如下属性值:
Matrix(ImageView.ScaleType.MATRIX) |
使用matrix方式放缩 |
FitXY(ImageView.ScaleType.FIT_XY) |
对图片横、纵向放缩以适应ImageView |
fitStart(ImageView.ScaleType.FIT_START) |
保持纵横比放缩图片以适应ImageView,放缩后图片位于ImageView左上角 |
fitCenter(ImageView.ScaleType.FIT_CENTER) |
保持纵横比放缩图片以适应ImageView,放缩后图片位于ImageView中央 |
fitEnd(ImageView.ScaleType.FIT_END) |
保持纵横比放缩图片以适应ImageView,放缩后图片位于ImageView右下角 |
center(ImageView.ScaleType.CENER) |
将图片放至屏幕中央,不放缩 |
centerCrop(ImageView.Scale.CENTER_CROP) |
保持纵横比放缩图片,完全覆盖ImageView |
centerInside(ImageView.ScaleType.CENTER_INSIDE) |
保持纵横比放缩图片,使得ImageView能完全显示该图片 |
图-5
ImageButton控件的父类是ImageView控件,作用是接收并响应单击事件。
Button控件可显示前景图片和背景图片。
属性名 |
属性值示例 |
说明 |
src |
android:src=“@drawable/back” |
前景图片 |
其它属性参见ImageView |
图-6
说明:ImageButton的前景图片保持原尺寸,而ImageView的前景图片可以随控件尺寸缩放
文本颜色,#+8位十六进制数,前两位表示Alpha(透明度),3、4位:红色值,5、6位:绿色,7、8位:蓝色。
例如:#ffffff:白色,#000000:黑色
设置文字大小,单位可以是px(像素值),也可以是sp
(1) dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,为了支持WVGA、HVGA和QVGA 推荐使用dip,不依赖像素。
(2) px: pixels(像素). 不同设备显示效果相同,HVGA代表320x480像素,这个用得比较多。
(3) sp: scaled pixels(与刻度无关的像素). 主要用于字体显示。
(4)关于dip和sp
过去常以像素为单位设计用户界面。这样处理的问题在于,如果在一个每英寸点数(dip)更高分辨率的显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清内容。
与分辨率无关的度量单位可以解决这一问题。Android支持下列所有单位。
px(像素):屏幕上的点。
in(英寸):长度单位。
mm(毫米):长度单位。
pt(磅):1/72英寸。
dp(与密度无关的像素):一种基于屏幕密度的抽象单位。在每英寸160点(标准分辨率)的显示器上,1dp = 1px。
在每英寸240点的显示器(高分辨率)上,1dp=240/160=1.5px
在每英寸120点的显示器上(低分辨率)上,1dp=120/160=0.75px
dip:与dp相同,sp(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
为了使用户界面能够在现在和将来的显示器类型上正常显示,建议始终使用sp作为文字大小的单位,将dip作为图形尺寸的单位。
命令格式:@+id/ID值,示例:android:id=”@+id/tv”
几乎每一个UI组件都必须设置宽和高。
【示例代码】setContentView(R.id.main);
说明:R.id.main是R.java文件中定义的索引值,通过该索引值在res/layout文件夹下查找到main.xml文件。
【示例代码】TextView tv=(TextView)findViewById(R.id.tv);
说明:R.id.tv是R.java中定义的控件的索引值,通过该索引值将在main.xml中查找到id值是tv的控件,并以该控件来实例化tv所引用的对象。
【示例代码】String text=tv.getText();//将tv控件中的text属性的值赋值给text变量
Log.d命令的作用是用于调试程序,Android开发推荐使用Log.d,而不推荐使用控制台输出命令,主要原因是信息输出在日志窗口能保留调试的信息而不丢失。
操作步骤如下:
步骤1、Log.d(“UI”,”Hello”);
提示:以上命令在输入至Log时,按Alt+/并按回车(目的是导包),再输入后续命令。
步骤2、按下图所示操作,打开日志视图:
图-7
步骤3、按下图所示操作,在日志窗口中增加一个过滤标签,该标签只显示字符串是”UI”条件的Log.d输出的信息。
图-8
运行当前项目,则Hello将显示在上图中(6)所指向的区域中。
【示例代码】定义按钮的单击事件响应程序:
Button button=(Button)findViewById(R.id.button);
Button.setOnClickListener(new OnClickListener()){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
说明:
1、 OnClickListener是View类的内部接口,负责响应用户单击事件,该接口中只有一个方法onClick(),通过在该方法中编写代码,可在不同的应用中响应用户的单击事件。
2、 实现该接口常采用内部匿名类的方式,编写以上代码的操作步骤如下:
步骤1、输入Button.setOn
步骤2、按Alt+/,出现下图所示的列表窗口:
图-9
步骤3、现在列表中第一项处于选择状态,直接按回车键(若灰色背景不在第一项,则按
上下光标键移至列表中第一项,再按回车键)。出现下行所示代码:
button.setOnClickListener(l)
步骤4、在括号中输入new再输入一个空格,按Alt+/,出现下图列表:
图-10
显示出View.OnClickListener接口,确保该项的背景是灰色(被选择状态),按回车键,出现下图所示:
步骤5、按下图所示操作,其中,第二步骤是导包:android.view.View.OnClickListener
图-11
步骤6、按下图所示操作:
图-12
步骤7、下图中的注释语句的下面输入具体的响应单击事件的代码。
图-13
模拟器每次运行时会临时生成几个.tmp后缀的临时文件,一段时间后,可能占用占满磁盘空间。
所以要定期清理c:\documents and settings\sh\Local Settings\Temp\AndroidEmulator文件夹下的内容。
模拟器存储的路径:c:\Documents and Settings\3gtarena.3GTARENA-100\android
若以上路径中包含中文,则创建模拟器将会失败。
解决办法:在环境变量中增加
变量名(键):ANDROID_SDK_HOME环境变量,
变量(值):不含中文的路径。
如下图所示:
图-14
原因:ADT插件与Android的SDK版本不一致。
解决办法:ADT与Android版本均使用最新。
原因:视图过期。
解决办法:重新点击模拟器中的Device视图中的模拟器来刷新。如下图所示:
图-15
若项目已经运行,再次运行在控制台将出现以下提示:
ActivityManager: Warning: Activity not started, its current task has been brought to the front
表示当前项目的窗口已经在最前面,因此Activity不能启动。
解决办法:
1、在模拟器中关闭项目,再次运行项目,但不会重新安装应用程序。
2、对项目进行修改,然后运行,则当前应用程序会先重新安装,再运行。
原因:Android系统没有及时更新项目。
解决办法:重构项目,再运行项目。按下图所示操作:
图-15 图-16
原因:导入了android.R,
解决方法:删除import android.R;
解决办法:图片文件名必须是小写字母、数字、下划线或英文句号。
原因:未捕获异常。
原因之一:空指针异常错误引发。
解决办法:查看日志中最后出现的异常。
按以下步骤将日志中感兴趣的信息以文本文件格式导出至指定位置:
图-17