当前位置: 代码迷 >> Android >> 2.构建Android界面
  详细解决方案

2.构建Android界面

热度:76   发布时间:2016-04-28 07:53:44.0
android 构建android应用的介绍和说明

目录

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打不开布局文件(SDKADT版本) 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

 

2.构建Android界面

Android界面有两种构建方式,一种是用拖拽方式,一种是代码方式。

2.1.拖拽控件

如图-1所示:

-1

2.2.使用代码

【示例1】用XML代码定义控件,如图-2所示:

-2

【示例2】用Java代码在窗口中显示一个标签,该标签的显示内容为:Hello World,代码如下所示:

TextView tv=new TextView(this); //new一个标签控件

tv.setText(“Hello World”); //设置显示的文本

setContentView(tv); //将该控件设置为窗口的显示内容

2.3.界面控件

2.3.1.XML为布局添加控件

Android提倡用XML的代码方式开发UI,辅之以Java代码。用Java代码创建UI,因其具有灵活性也较常见。后面的UI开发主要用XML代码方式。

在XML中添加控件如图-2所示,建议每行只写一个XML命令。

2.3.1.1TextView控件

2.3.1.1.1 概述

TextView是一个标签控件,用于显示提示信息。

TextView是ViewGroup的子类,该类是EditText和Button的父类。

2.3.1.1.2 常用属性

属性名

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

2.3.1.2.EditText控件

2.3.1.2.1 概述

EditText是文本编辑框控件,该控件继承自TextView类,常用来进行文本输入、编辑。

2.3.1.2.2 常用属性

EditText是TextView类的子类,因此上表中的属性EditText同样具有。

2.3.1.3.Button控件

2.3.1.3.1 概述

Button控件的父类是TextView控件。作用是响应单击事件。

Button控件可显示文字,并且可将图片设置为背景。

2.3.1.3.2 常用属性

Button是TextView类的子类,因此上表中的属性EditText同样具有。

2.3.1.3.3 常用方法

setOnClickListener(OnClickListener);

作用:响应鼠标单击的事件,参数是一个实现了View.OnClickListener接口的对象。

该方法的具体使用以及OnClickListener接口的作用在下面有详细说明。

2.3.1.4.ImageView控件

2.3.1.4.1 概述

ImageView是View类的子类,该控件用于显示图像(包括动画)。

2.3.1.4.2 常用属性

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

2.3.1.5.ImageButton控件

2.3.1.5.1.概述

ImageButton控件的父类是ImageView控件,作用是接收并响应单击事件。

Button控件可显示前景图片和背景图片。

2.3.1.5.2.常用属性

属性名

属性值示例

说明

src

android:[email protected]/back”

前景图片

其它属性参见ImageView

-6

说明:ImageButton的前景图片保持原尺寸,而ImageView的前景图片可以随控件尺寸缩放

2.3.2.控件的相关说明

2.3.2.1.textColor

文本颜色,#+8位十六进制数,前两位表示Alpha(透明度),3、4位:红色值,5、6位:绿色,7、8位:蓝色。

例如:#ffffff:白色,#000000:黑色

2.3.2.2.textSize

设置文字大小,单位可以是px(像素值),也可以是sp

2.3.2.3.dppxsp

(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作为图形尺寸的单位。

2.3.2.4.设置控件的ID

命令格式:@+id/ID值,示例:android:id=”@+id/tv”

2.3.2.5.控件的宽度和高度

几乎每一个UI组件都必须设置宽和高。

2.4.构建Android界面对应的Java代码

2.4.1.设置布局文件为窗口的显示内容

【示例代码】setContentView(R.id.main);

说明:R.id.main是R.java文件中定义的索引值,通过该索引值在res/layout文件夹下查找到main.xml文件。

2.4.2.通过查找文件中的ID值实例化控件

【示例代码】TextView tv=(TextView)findViewById(R.id.tv);

说明:R.id.tv是R.java中定义的控件的索引值,通过该索引值将在main.xml中查找到id值是tv的控件,并以该控件来实例化tv所引用的对象。

2.4.3.getText:获取控件中的字符串

   【示例代码】String text=tv.getText();//tv控件中的text属性的值赋值给text变量

2.4.4.Log.d("标签","内容"):在日志窗口中输出指定字符串

Log.d命令的作用是用于调试程序,Android开发推荐使用Log.d,而不推荐使用控制台输出命令,主要原因是信息输出在日志窗口能保留调试的信息而不丢失。

操作步骤如下:

步骤1Log.d(“UI”,”Hello”);

提示:以上命令在输入至Log时,按Alt+/并按回车(目的是导包),再输入后续命令。

步骤2按下图所示操作,打开日志视图:

-7

步骤3按下图所示操作,在日志窗口中增加一个过滤标签,该标签只显示字符串是”UI”条件的Log.d输出的信息。

-8

运行当前项目,则Hello将显示在上图中(6)所指向的区域中。

2.4.5.定义控件的事件响应程序

【示例代码】定义按钮的单击事件响应程序:

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

2.5.模拟器

2.5.1.模拟器与真机的不同之处:

2.5.1.1.不支持呼叫和接听实际来电。

2.5.1.2.不支持USB连接

2.5.1.3.不支持相机/视频(捕捉),但支持输出(重放)

2.5.1.4.不支持扩展耳机

2.5.1.5.不能确定连接状态。

2.5.1.6.不能确定电池电量水平和交流电状态。

2.5.1.7.不能确定SD卡的插入/弹出。

2.5.1.8.不支持蓝牙。

2.5.2.模拟器常用快捷键

2.5.2.1.     键:返回桌面

2.5.2.2.CTRL+F11CTRL+F12键:横纵屏切换

2.5.2.3.长按模拟器的    键或键盘上的HOME键:返回上一窗口。

2.5.2..4.    键(键盘的ESCAPE键):关闭当前窗口,Activity被结束掉。

2.5.2.5.F3Call/Dial:拨号/呼叫键。

2.5.2.5.F4Hangup/EndCall:结束通话

2.5.2.6.F6:鼠标与轨迹球切换键。

2.5.2.7.F7Power;电源键

2.5.2.8.F5Search:搜索键

2.5.2.9.KEYPAD_PLUS,Ctrl-F5Volume up:增大音量键。

2.5.2.10.KEYPAD_MINUS,Ctrl-F6Volume down:减小音量键。

2.5.2.11.KEYPAD_5,Ctrl-F3相机键

2.5.2.12.KEYPAD_7,Ctrl-F11switch previous layout 返回键

2.5.2.13.Alt-ENTER:打开/关闭全屏模式

2.5.2.14.DELETE:显示轨迹球

2.5.3.模拟器使用注意事项:

2.5.3.1.平时使用emulator测试开发,可能会遇到系统关于C盘空间不足的提示,这是由于Android

模拟器每次运行时会临时生成几个.tmp后缀的临时文件,一段时间后,可能占用占满磁盘空间。

所以要定期清理c:\documents and settings\sh\Local Settings\Temp\AndroidEmulator文件夹下的内容。

2.5.3.2.无法创建或者模拟器无法启动

模拟器存储的路径:c:\Documents and Settings\3gtarena.3GTARENA-100\android

若以上路径中包含中文,则创建模拟器将会失败。

解决办法:在环境变量中增加

变量名(键):ANDROID_SDK_HOME环境变量,

变量(值):不含中文的路径。

如下图所示:

图-14

2.6.常见错误

2.6.1.Eclipse打不开布局文件(SDKADT版本)

原因:ADT插件与Android的SDK版本不一致。

解决办法:ADT与Android版本均使用最新。

2.6.2.无法删除模拟器SDCard中的文件或日志不更新

原因:视图过期。

解决办法:重新点击模拟器中的Device视图中的模拟器来刷新。如下图所示:

图-15

2.6.3.重新运行应用程序,但模拟器没有刷新

若项目已经运行,再次运行在控制台将出现以下提示:

        ActivityManager: Warning: Activity not started, its current task has been brought to the front

    表示当前项目的窗口已经在最前面,因此Activity不能启动。

    解决办法:

1、在模拟器中关闭项目,再次运行项目,但不会重新安装应用程序。

2、对项目进行修改,然后运行,则当前应用程序会先重新安装,再运行。

2.6.4.更新布局XML文件,运行到模拟器没有刷新

原因:Android系统没有及时更新项目。

解决办法:重构项目,再运行项目。按下图所示操作:

图-15 图-16

2.6.6.使用R引用资源,提示编译错误

原因:导入了android.R,

解决方法:删除import android.R;

2.6.7.拷贝文件至项目中,出现编译错误

解决办法:图片文件名必须是小写字母、数字、下划线或英文句号。

2.6.8. Force close(强制关闭):应用程序意外终止对话框

原因:未捕获异常。

    原因之一:空指针异常错误引发。

解决办法:查看日志中最后出现的异常。

2.6.9.将日志中的信息导出

按以下步骤将日志中感兴趣的信息以文本文件格式导出至指定位置:

-17


  相关解决方案