存在问题:
我看到别人的程序,想学习人家的UI布局是怎么做的,如何能窥探一二?
存在问题:
在学习ViewGroup和Layout时我们可能会有一个疑问,如果我在Xml布局文件中不放置Layout,直接放TextView等组件的时候,它是用什么方式布局的?
解决方法:
Android的SDK中自带了一个查看UI布局层级结构的工具:HierarchyView.bat。在模拟器运行的情况下,使用该工具可以将当前的Activity中的UI组件们以对象树的形式展现出来,每一个组件所包含的属性也能窥探得到。在对象树上的任意节点可以看到该节点及以下节点的显示效果。使用HierarchyView能深入全面的理解xml布局文件,更可以通过它来学习别人优秀的布局技巧。


(看到那个不起眼的hierachyview.bat文件没,哎,竟然它是学习Android界面设计的超级利器)

具体使用方法:待模拟器及想观察的程序启动后,双击Hirerachyview.bat,点击Load View Hierarchy



现在我们先解决第一个问题:分析AndroidQQ的登录界面组成。

从图中可以看到QQ登录界面中的核心部分是用相对布局摆放的,甚至可以看到有的TextView还用的是IDE自动起的ID:TextView01。
下面我们解决第二个问题:找到默认的布局方式是什么?
我们建一个新项目,Main.xml中只放一个TextView,
<?xml version="1.0" encoding="utf-8"?>
<TextView android:text="hi" android:id="@+id/TV"
android:layout_width="wrap_content" android:layout_height="wrap_content"
xmlns:android=" http://schemas.android.com/apk/res/android"></TextView>

看看他的布局层次是什么样的:

我们可以看到顶级元素是个PhoneWindow,其下有一个线性布局LinearLayout,再下面有一个应用程序标题条,


标题条是由一个帧布局FrameLayout和一个TextView组成。
我们自己写的TextView也放在了一个Layout里,这个Layout就是ID叫做content的FrameLayout。

接下来我们再创建一个带有LinearLayout的程序,看看他的层次结构来确定一下,那个ID是content的FrameLayout是固有的还是因为没布局元素由系统自动加上去的。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android=" http://schemas.android.com/apk/res/android">
<TextView android:text="haha" android:id="@+id/TextView01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>
下面是新程序的UI界面层次结构图:

这一次我们同样看到了那个Id是content的Framelayout:) 这说明它是窗口布局结构里固有的。
出自:《android学习指南》

更多相关文章

  1. Android中设置半个屏幕大小且居中的按钮布局 (layout_weight属性
  2. Android评论功能的实现
  3. ReactNative之Android绝对布局position:'absolute'问题
  4. Android(安卓)Reveal圆形Activity转场动画
  5. 通过Html网页调用本地安卓(android)app程序代码
  6. Android中Fragment的使用
  7. activity 启动流程分析
  8. Android(安卓)中自定义View的应用.
  9. android xml解析之Pull

随机推荐

  1. gson使用在android使用例子
  2. Android 拍照及相册选图的那些坑
  3. android 设置bitmap 设置图片的大小
  4. android SQLiteDatebase 实践
  5. Ubuntu上安装和使用Android Studio
  6. android音频、视频、拍照基础操作
  7. Android SDK与ADT不匹配的问题 This Andr
  8. Android(安卓)UI ListView讲解
  9. Android下读取logcat的信息
  10. 搭建 android 代码镜像服务