RelativeLayout的使用 新浪微博客户端

转载 2012年03月28日 21:24:26

一、效果图



2.1  实现 图一 效果代码

<RelativeLayout android:id="@id/rlDigest"
                android:background="@drawable/panel_bg" android:layout_width="fill_parent"
                android:layout_height="100.0dip" android:layout_margin="10.0dip">
                <TextView android:textSize="16.0sp" android:textColor="#ff7d899d"
                    android:gravity="center_vertical" android:id="@id/tvAddress"
                    android:layout_width="wrap_content" android:layout_height="wrap_content"
                    android:layout_marginLeft="5.0dip" android:layout_marginTop="10.0dip"
                    android:text="@string/userinfo_address"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true" />
                <TextView android:textSize="16.0sp" android:textColor="#ff373737"
                    android:id="@id/tvAddress_content" android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:layout_marginLeft="10.0dip"
                    android:layout_toRightOf="@id/tvAddress" android:layout_alignTop="@id/tvAddress" />
                <View android:id="@id/vHDivider" android:background="@drawable/horizontal_separation_line_repeat"
                    android:layout_width="fill_parent" android:layout_height="1.0dip"
                    android:layout_centerVertical="true" />
                <TextView android:textSize="16.0sp" android:textColor="#ff7d899d"
                    android:gravity="center_vertical" android:id="@id/tvAccount_info"
                    android:layout_width="wrap_content" android:layout_height="wrap_content"
                    android:text="@string/account_info" android:layout_below="@id/vHDivider"
                    android:layout_alignLeft="@id/tvAddress"
                    android:layout_alignParentBottom="true" />
                <TextView android:textSize="16.0sp" android:textColor="#ff373737"
                    android:gravity="center_vertical" android:id="@id/tvAccount_info_content"
                    android:layout_width="wrap_content" android:layout_height="wrap_content"
                    android:layout_marginLeft="10.0dip" android:layout_marginBottom="12.0dip"
                    android:singleLine="true" android:layout_toRightOf="@id/tvAccount_info"
                    android:layout_alignBottom="@id/tvAccount_info" />
            </RelativeLayout>
            <RelativeLayout android:background="@drawable/panel_bg"
                android:layout_width="fill_parent" android:layout_height="130.0dip"
                android:layout_margin="10.0dip">
                <View android:id="@id/vVDivider1" android:background="@drawable/vertical_separation_line_repeat"
                    android:layout_width="1.0dip" android:layout_height="fill_parent"
                    android:layout_centerHorizontal="true" />
                <View android:id="@id/vHDivider2" android:background="@drawable/horizontal_separation_line_repeat"
                    android:layout_width="fill_parent" android:layout_height="1.0dip"
                    android:layout_centerVertical="true" />
                <RelativeLayout android:id="@id/llAttention"
                    android:background="@drawable/bg_panel_above_left"
                    android:clickable="true" android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:layout_toLeftOf="@id/vVDivider1"
                    android:layout_above="@id/vHDivider2"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true">
                    <TextView android:gravity="center" android:id="@id/tvAttention_count"
                        android:layout_width="fill_parent" android:layout_height="wrap_content"
                        android:layout_marginTop="10.0dip" android:text="0"
                        android:layout_centerHorizontal="true"
                        style="@style/userinfo_panel_textview_count" />
                    <TextView android:gravity="center" android:id="@id/tvAttention"
                        android:layout_width="fill_parent" android:layout_height="wrap_content"
                        android:text="@string/attention" android:layout_below="@id/tvAttention_count"
                        android:layout_centerHorizontal="true"
                        style="@style/userinfo_panel_textview_title" />
                </RelativeLayout>
                <LinearLayout android:orientation="vertical"
                    android:id="@id/rlWeibo" android:background="@drawable/bg_panel_above_right"
                    android:clickable="true" android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:layout_toRightOf="@id/vVDivider1"
                    android:layout_above="@id/vHDivider2"
                    android:layout_alignParentTop="true"
                    android:layout_alignParentRight="true">
                    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                        android:id="@id/tvWeibo_count" android:layout_width="fill_parent"
                        android:layout_height="wrap_content" android:layout_marginTop="10.0dip"
                        android:text="0" style="@style/userinfo_panel_textview_count" />
                    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                        android:id="@id/tvTopic" android:layout_width="fill_parent"
                        android:layout_height="wrap_content" android:text="@string/radio_button_topic"
                        style="@style/userinfo_panel_textview_title" />
                </LinearLayout>
                <LinearLayout android:orientation="vertical"
                    android:id="@id/llFans" android:background="@drawable/bg_panel_below_left"
                    android:clickable="true" android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:layout_toLeftOf="@id/vVDivider1"
                    android:layout_below="@id/vHDivider2"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentBottom="true">
                    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                        android:id="@id/tvFans_count" android:layout_width="fill_parent"
                        android:layout_height="wrap_content" android:layout_marginTop="10.0dip"
                        android:text="0" style="@style/userinfo_panel_textview_count" />
                    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                        android:id="@id/tvFans" android:layout_width="fill_parent"
                        android:layout_height="wrap_content" android:text="@string/fans"
                        style="@style/userinfo_panel_textview_title" />
                </LinearLayout>
                <LinearLayout android:orientation="vertical"
                    android:id="@id/llTopic" android:background="@drawable/bg_panel_below_right"
                    android:clickable="true" android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:layout_toRightOf="@id/vVDivider1"
                    android:layout_below="@id/vHDivider2"
                    android:layout_alignParentRight="true"
                    android:layout_alignParentBottom="true">
                    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                        android:id="@id/tvTopic_count" android:layout_width="fill_parent"
                        android:layout_height="wrap_content" android:layout_marginTop="10.0dip"
                        android:text="0" style="@style/userinfo_panel_textview_count" />
                    <TextView android:gravity="center" android:layout_gravity="center_horizontal"
                        android:id="@id/tvTopic" android:layout_width="fill_parent"
                        android:layout_height="wrap_content" android:text="@string/his_topics"
                        style="@style/userinfo_panel_textview_title" />
                </LinearLayout>
            </RelativeLayout>

代码说明:

        2.1.1  第一个RelativeLayout为图一上的实现代码。注意使用了一个View,也就是一条横线,令其居中布局;"地址:"的TextView通过layout_alignParentLeft和layout_alignParentTop令其在整个RelativeLayout顶左顶上;"账号信息:"的TextView通过layout_below令其位于横线下方,layout_alignLeft令其与"地址:"的TextView左边对齐,然后用layout_alignParentBottom让其居于容器底部。

        2.1.2  第二个RelativeLayout为图一下的实现代码。关键是vVDivider1和vVDivider2,与3.1.1类似,画出了一个十字架的布局,然后分别用居左、居上、居下、居右等方式实现了该布局效果。

    2.2  实现 图二 效果代码


 <RelativeLayout android:id="@+id/rlpb"
        android:layout_width="fill_parent" android:background="#ffeff0f4"
        android:visibility="gone" android:layout_height="fill_parent"
        android:layout_weight="1.0">
        <LinearLayout android:layout_centerInParent="true"
            android:layout_width="wrap_content" android:layout_height="wrap_content">
            <ProgressBar android:id="@+id/prb"
                style="?android:attr/progressBarStyleSmallTitle"
                android:layout_width="wrap_content" android:layout_height="wrap_content" />
            <TextView android:text="@string/loadinfo"
                android:layout_width="wrap_content" android:layout_height="wrap_content" />
        </LinearLayout>
    </RelativeLayout>

代码说明:

        主要是layout_centerInParent属性的应用,令其居于RelativeLayout的中间。使用的时候领ListView先隐藏,然后让这个布局显示并填充,用完在设置Visible为GONE即可。

 

  三、总结

    熟练掌握以下重要属性,并灵活运用:

    android:layout_centerInParent   居中布局
    android:layout_centerVertical    水平居中布局
    android:layout_centerHorizontal  垂直居中布局

 

    android:layout_alignParentTop    居于容器内顶部
    android:layout_alignParentBottom  居于容器内底部
    android:layout_alignParentLeft    居于容器内左边
    android:layout_alignParentRight    居于容器内右边

    android:layout_above       居于指定View的上方
    android:layout_below       居于指定View的下方

    android:layout_toRightOf      在指定View的右边
    android:layout_toLeftOf        在指定View的左边

    android:layout_alignTop      与指定View的Top一致


推荐一个Android开源项目-AisenWeiBo

转载地址:http://segmentfault.com/a/1190000003040772 Aisen微博是前同事写的一个新浪微博客户端,现在他绝对是Android大牛了, 想学习微博API使...
  • lijinhua7602
  • lijinhua7602
  • 2015年08月18日 22:26
  • 443

使用ShareSDK实现新浪微博的一键分享功能

 在公司最近的一个项目中,需要实现一键分享功能,在这里我使用的是第三方平台ShareSDK,将使用经验与大家分享 先看效果图 主界面 分享界面 由...
  • rsgzs
  • rsgzs
  • 2015年12月12日 23:10
  • 1499

ios:新浪微博iphone客户端

这算是自己做的第一个比较完整的ios的小应用程序,接触到了很多自己以前没怎么用到的东西,好像coredata,GCD,post发送请求,自定义UITableViewCell等等。 先介绍下这个小应用...
  • kobbbb
  • kobbbb
  • 2012年07月17日 15:06
  • 11498

新浪微博前端解析

题记:搞前端的同学也许都知道一个数字——4 秒,有研究表明,如果一个网站没有在4 秒之内加载完成,用户就会感到焦躁不愉快,并离开这个网站。网站的内容、搜索引擎优化、用户体验?哪个更重要呢?在速度面前,...
  • fyqcdbdx
  • fyqcdbdx
  • 2011年12月05日 15:07
  • 2187

面试知识储备:新浪微博Android客户端的实现

项目介绍及完成的logo介绍 项目介绍 启动界面(3秒进入主界面)——用户第一次登陆的界面 + “授权”按钮——授权界面——微博首页 技术要点 1、Aouth认证 2、获取微博列表 3、发表博...
  • a362523
  • a362523
  • 2015年08月06日 22:32
  • 815

RelativeLayout和LinearLayout性能比较

相对布局和线性布局的性能比较 RelativeLayout和LinearLayout是Android中常用的布局,两者的使用会极大的影响程序生成每一帧的性能,因此,正确的使用它们是提升程序性能的重要工...
  • guyuealian
  • guyuealian
  • 2016年08月09日 15:55
  • 3510

android学习笔记21--------------RelativeLayout+ListView

转载请注明出处:http://blog.csdn.net/yf210yf 效果图 public class ListViewActivity extends ListActivit...
  • yf210yf
  • yf210yf
  • 2012年02月16日 12:17
  • 2666

新浪微博技术架构分析(一)

微博发布模式 同步推模式 早期的架构中,用户发表微博后,系统会立即将这条微博插入到数据库所有分析的订阅列表中。当用户量较大时,特别是明星用户发布微博时,会引起大量的数据库写操作,系统性能急剧下降...
  • apple_operation
  • apple_operation
  • 2016年11月23日 20:11
  • 1094

2016最新新浪微博开发源代码

不说废话直接正题;
  • a5601564
  • a5601564
  • 2016年04月10日 12:41
  • 1544

ScrollView与RelativeLayout一起用,显示有问题的解决方法

有一个页面是RelativeLayout,用为了让软键盘弹出时,不挤扁界面,在界面的外面包裹了一层scrollview。但是无论RelativeLayout的layout_heigt设置为 an...
  • hanfeiyu1
  • hanfeiyu1
  • 2016年09月02日 00:10
  • 542
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RelativeLayout的使用 新浪微博客户端
举报原因:
原因补充:

(最多只允许输入30个字)