Android的基本UI界面一般都是在xml文件里定义好,然后通过activity的setContentView来显示在界面上。这是Android UI的最简单的构建方式。事实上,为了实现更加复杂和更加灵活的UI界面。往往须要动态生成UI界面,甚至依据用户的点击或者配置,动态地改变UI。本文即介绍该技巧。对事件和进程的可能安卓设备实现触摸事件的监听。跨进程
如果Androidproject的一个xml文件名称为activity_main.xml,定义例如以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<
LinearLayout
xmlns
:
android
=
"http://schemas.android.com/apk/res/android"
xmlns
:
tools
=
"http://schemas.android.com/tools"
android
:
layout_width
=
"match_parent"
android
:
layout_height
=
"match_parent"
tools
:
context
=
".MainActivity"
>
<
TextView
android
:
id
=
"@+id/DynamicText"
android
:
layout_width
=
"wrap_content"
android
:
layout_height
=
"wrap_content"
/
>
<
/
LinearLayout
>
|
在 MainActivity 中,希望显示这个简单的界面有三种方式(注:以下的代码均在 MainActivity 的 onCreate() 函数中实现 )。
(1) 第一种方式,直接通过传统的 setContentView(R.layout.*) 来载入,即:
1
2
3
4
5
6
7
|
setContentView
(
R
.
layout
.
activity_main
)
;
TextView
text
=
(
TextView
)
this
.
findViewById
(
R
.
id
.
DynamicText
)
;
text
.
setText
(
"Hello World"
)
;
|
(2) 另外一种方式。通过 LayoutInflater 来间接载入,即:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
LayoutInflater
mInflater
=
LayoutInflater
.
from
(
this
)
;
View
contentView
=
mInflater
.
inflate
(
R
.
layout
.
activity_main
,
null
)
;
TextView
text
=
(
TextView
)
contentView
.
findViewById
(
R
.
id
.
DynamicText
)
;
text
.
setText
(
"Hello World"
)
;
setContentView
(
contentView
)
;
|
注:
LayoutInflater 相当于一个“布局载入器”,有三种方式能够从系统中获取到该布局载入器对象,如:
方法一: LayoutInflater.from(this);
方法二: (LayoutInflater)this.getSystemService(this.LAYOUT_INFLATER_SERVICE);
方法三: this.getLayoutInflater();
通过该对象的 inflate方法。能够将指定的xml文件载入转换为View类对象。该xml文件里的控件的对象。都能够通过该View对象的findViewById方法获取。
(3)第三种方式,纯粹地手工创建 UI 界面
xml 文件里的不论什么标签,都是有对应的类来定义的,因此。我们全然能够不使用xml 文件,纯粹地动态创建所需的UI界面,示比例如以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
LinearLayout
layout
=
new
LinearLayout
(
this
)
;
TextView
text
=
new
TextView
(
this
)
;
text
.
setText
(
"Hello World"
)
;
text
.
setLayoutParams
(
new
ViewGroup
.
LayoutParams
(
LayoutParams
.
WRAP_CONTENT
,
LayoutParams
.
WRAP_CONTENT
)
)
;
layout
.
addView
(
text
)
;
setContentView
(
layout
)
;
|
Android动态UI创建的技巧就讲到这儿了,在本演示样例中。为了方便理解。都是採用的最简单的样例,因此可能看不出动态创建UI的长处和用途,可是不要紧,先掌握基本技巧,后面的文章中,会慢慢将这些技术应用起来,到时侯就能理解其真正的应用场景了。