第五讲:用户界面 View(一)

813
回复
3073042
查看
  [复制链接]

2826

主题

7684

帖子

9603

安币

管理员

Rank: 9Rank: 9Rank: 9

QQ达人最佳新人活跃会员热心会员推广达人灌水之王突出贡献

QQ
发表于 2011-4-23 13:18:27 | 显示全部楼层 |阅读模式
本节内容:
什么是View
常用Layout介绍:FrameLayout, LinearLayout
点此下载:
一、什么是View
我们上节课说,Activity是Android程序的显示层,每一个显示窗口都是一个Activity;可是Activity本身无法显示在屏幕上,我们可以把它理解成是一个抽象层,一个壳子;就譬如一个JSP页面,它本身并没有显示出来任何东西,负责显示的是他生成的HTML标签。那么Android里谁才是真正显示出来的部分?--是View和ViewGroup,而ViewGroup其实也是View的子类。
有了上述的概念,我们现在可以讲明白一个Activity中的显示元素是如何显示出来的了。首先UI组件是按层次结构来由外到内的方式逐步展示的。要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的setContentView()方法并且传入这个层次树的根节点引用。当Activity被激活并且获得焦点时,系统会通知activity并且请求根节点去计算并绘制树,根节点就会请求它的子节点去绘制它们自己。每个树上的ViewGroup节点会负责绘制它的子节点。ViewGroup会计算它的有效空间,布局所有的子显示对象,并最终调用所有的子显示对象的 Draw()方法来绘制显示对象。各个子显示对象可以向父对象请求它们在布局中的大小和位置,但最终决定各个子显示对象的大小和位置的是父对象。
Android程序借助View和ViewGroup对象来构建用户界面。Android提供了比HTML多得多的,现成的用户界面组件,譬如现在网站上常见的五角星评分效果组件RatingBar。RatingBar的显示效果如下图所示:
ViewGroup是一个抽象类,所以真正充当容器的是他的子类们。我们在这里将介绍 帧布局FrameLayout,线性布局LinearLayout,绝对布局AbsoluteLayout,相对布局RelativeLayout,表格布局TableLayout等几个常用布局,大约要分3讲讲完。
1、帧布局 FrameLayout:
是最简单的一个布局对象。在他里面的的所有显示对象爱你过都将固定在屏幕的左上角,不能指定位置,但允许有多个显示对象,只是后一个会直接覆盖在前一个之上显示,会把前面的组件部分或全部挡住。下图的例子里,FrameLayout中放了3个ImageView组件,第一个是蓝色的,第二个是绿色的,第三个是树状图(透明的png格式)。ImageView就相当于Html中的img标签,接下来会讲到这个组件。
下面看一个FrameLayout的例子:

  1. <?xml version=”1.0″ encoding=”utf-8″?><FrameLayout android:id=”@+id/FrameLayout01″
  2. android:layout_width=”fill_parent” android:layout_height=”fill_parent”
  3. xmlns:android=”http://schemas.android.com/apk/res/android”><ImageView android:id=”@+id/ImageView01″ android:src=”@drawable/p1″
  4. android:layout_width=”wrap_content” android:layout_height=”wrap_content”></ImageView><ImageView android:id=”@+id/ImageView02″ android:src=”@drawable/p2″
  5. android:layout_width=”wrap_content” android:layout_height=”wrap_content”></ImageView><ImageView android:id=”@+id/ImageView03″ android:src=”@drawable/p3″
  6. android:layout_width=”wrap_content” android:layout_height=”wrap_content”></ImageView></FrameLayout>
复制代码


完整的代码在PPT附带的目录中,需要的朋友可以留言向我索要。

  1. <?xml version=”1.0″ encoding=”utf-8″?>
  2. <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
  3. android:orientation=”vertical”
  4. android:layout_width=”fill_parent”
  5. android:layout_height=”fill_parent”
  6. android:gravity=”center_horizontal”
  7. >
  8. <TextView
  9. android:layout_width=”fill_parent”
  10. android:layout_height=”wrap_content”
  11. android:text=”给小宝宝起个名字:”
  12. android:textSize=”20px”
  13. android:textColor=”#0ff”
  14. android:background=”#333″/>
  15. <TextView
  16. android:layout_width=”wrap_content”
  17. android:layout_height=”wrap_content”
  18. android:text=”遥遥是男孩的小名”
  19. android:textSize=”20px”
  20. android:textColor=”#0f0″
  21. android:background=”#eee”
  22. android:layout_weight=”3″
  23. />
  24. <TextView
  25. android:layout_width=”wrap_content”
  26. android:layout_height=”wrap_content”
  27. android:text=”瑶瑶是女孩的小名”
  28. android:textColor=”#00f”
  29. android:textSize=”20px”
  30. android:background=”#ccc”
  31. android:layout_weight=”1″
  32. /><TextView
  33. android:layout_width=”fill_parent”
  34. android:layout_height=”wrap_content”
  35. android:text=”海因是男孩的大名”
  36. android:textColor=”#f33″
  37. android:textSize=”20px”
  38. android:background=”#888″
  39. android:layout_weight=”1″
  40. />
  41. <TextView
  42. android:layout_width=”fill_parent”
  43. android:layout_height=”wrap_content”
  44. android:text=”海音是女孩的大名”
  45. android:textColor=”#ff3″
  46. android:textSize=”20px”
  47. android:background=”#333″
  48. android:layout_weight=”1″
  49. />
  50. </LinearLayout>
复制代码


下图是显示效果:
好吧下次再讲。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

点评

谢谢楼主分享,精髓  发表于 2013-10-5 18:23
写点非常好  发表于 2013-1-17 16:43

0

主题

12

帖子

15

安币

初级码农

Rank: 1

发表于 2011-5-26 10:53:15 | 显示全部楼层
哈哈,谢谢楼主,学到了不少.

2

主题

20

帖子

163

安币

程序猿

Rank: 2

发表于 2011-6-16 16:28:29 | 显示全部楼层
楼主,学到了不少。幸苦了。
快走踏金秋!!!

0

主题

12

帖子

5

安币

初级码农

Rank: 1

发表于 2011-6-17 10:51:58 | 显示全部楼层
学习了,多谢多谢

0

主题

29

帖子

12

安币

初级码农

Rank: 1

发表于 2011-6-19 07:59:56 | 显示全部楼层
感谢分享

0

主题

21

帖子

14

安币

初级码农

Rank: 1

发表于 2011-7-8 20:26:12 | 显示全部楼层
学过ling

0

主题

22

帖子

38

安币

程序猿

Rank: 2

发表于 2011-7-18 21:30:54 | 显示全部楼层
感谢分享,每讲都会认真得看

0

主题

6

帖子

21

安币

初级码农

Rank: 1

发表于 2011-8-11 15:32:37 | 显示全部楼层
谢谢分享~~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )