终于是到了M开头的文件了,没错,终于能遇到最熟悉的main文件了,直接进入正题吧。
1.main:出乎我的预料,oschina的main文件非常的简单,只有短短几行代码,一望过去,都是<include>标签,瞬间我就明白了,全是引用了之前定义完的代码,因为代码不长,我就全部复制进来再来讲。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white">
<include layout="@layout/main_header" />
<net.oschina.app.widget.ScrollLayout
android:id="@+id/main_scrolllayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<include layout="@layout/frame_news" />
<include layout="@layout/frame_question" />
<include layout="@layout/frame_tweet" />
<include layout="@layout/frame_active" />
</net.oschina.app.widget.ScrollLayout>
<include layout="@layout/main_footer" />
</LinearLayout>
一个老面孔LinearLayout,接着引用main_header文件,这个文件下面来讲,然后导入net.oschina.app.widget.ScrollLayout 包,我觉得关于包的使用还是有必要
在这里认真学习一下。之后便是上两篇介绍过的几个frame文件了,分别是资讯,问答,动弹,我的空间。下面是引用main_footer文件,这个下面也会讲。
2.main_header:代码倒是挺简单的,这里用的是相对布局,下面是一个表示“资讯”的图片 的文本。(新版里这里有进度条和搜索图标,老版本进度条很小,在资讯图案的下发,几乎看不到),接着是三个按钮图片标签,分别表示最新资讯,最新博客和推荐阅读,还是因为版本不同的关系,老版的三个图案实现的是不同的功能,而新版本,则是将资讯页面完完全全作为首页了,所以页面代码有所不同。
3.main_footer:这个页面也很简单,单纯的页脚文件,显示的是五个图标,代码就是图片,竖线,图片,竖线。。。但是这里的图片居然用的是RadioButton标签,这让我大感兴趣,明显,单选框用在这里的意思就是只能同时按下一个图案。
满怀期待的把main看完了,居然只用了十分钟就把它解读了,不得不说这里引用起了很大的作用,缩减了代码量,提高了代码效率,这是我们学习java,android的捷径。
4.message_detail:这几个文件代码前缀叫聊天细节,具体作用在我的空间的留言部分。这个文件相当于上面的main文件一样,是个主要的文件,其他几个文件都是组成它的一部分。
LinearLayout布局,<include>标签引用页眉,使用包net.oschina.app.widget.PullToRefreshListView,话说这些包真的很复杂,按住Ctrl进去,就能看到完整细节,下面又是<include>标签引用页脚,这就完成了。
5.message_detail_footer:页脚,先上截图:
ViewSwitcher标签实现动画效果,线性布局,背景是黑色图片,之后是如图的白色图片文件,里面还写着发送留言字样。下面的线性布局是按下发送留言图片之后产生的,一个文本编辑框,和一个发送按钮。
6.message_detail_header:页眉文件,看图:
这次是FrameLayout,框架布局,但是我参考了网上的文件后发现它的名字更趋向于“单帧布局”:这种布局下每个添加的子控件都被放在布局的左上角,并覆盖在前一子控件的上层。其实我发现,这个和之前的页脚对比,页眉要复杂一些,所以单纯用相对布局可能不太好排版。在布局中添加了背景,然后使用图片控件表示“返回”,
android:layout_gravity="left|center"
中间文本控件表示与何人的对话
android:layout_gravity="center"
之后是一个进度条控件,表示刷新
android:layout_gravity="right|center"
以上三句代码表示了框架布局的方便性,若使用线性布局,肯定没这么简单。
对啦还有一个图片控件表示刷新,和进度条重合了,这里不概述了。
7.message_forward:转发留言,长按住别人的留言就能进入这一步
很奇怪,这里同样是定义页眉,为啥用到的又回到了线性布局呢?难道我上面的推测不正确?我想了下,这里不是页眉,只是定义一个头部文件而已,下面还有线性布局完成整个页面,所以才是这样的。下面LenearLayout写的是图片中中间部分,文本控件“发给:”,文本编辑框内置 android:hint属性显示:"请输入对方昵称",再一个线性布局完成最下部分,文本控件:“留言内容”,文本编辑框属性android:hint=“请输入留言内容"。
8.message_pub:发送留言,新版的实在是没找到这部分内容,不管它了,反正跟上面一个文件差不多。
9.message_lisitem和message_detail_listitem:搞不懂了,这两个文件名字都差不多,代码倒是不一样,后者预览界面比起前者,有两个用户头像,新版的是没有后者内容的,所以这里就讨论前者的代码。
线性布局,图片控件表示用户头像,线性布局,并以一个对话框作为背景,后面是文本控件表示内容,下面是相对布局。。。原来还能这么用,这样在一个背景内也能实现较好的排版,下面三个文本控件实现的是客户端,时间和评论次数。
这一篇写的时间挺长的,看看Layout文件夹,总算是写到一半了,这两天一篇的速度还是有点慢啊~
OK,未完待续!