http://blog.csdn.net/wangjinyu501/article/details/8153475

http://blog.csdn.net/wangjinyu501/article/details/8153475

http://blog.csdn.net/wangjinyu501/article/details/8153475

http://blog.csdn.net/wangjinyu501/article/details/8153475

http://blog.csdn.net/wangjinyu501/article/details/8153475




Android仿QQ空间

分类:Android 5404人阅读 评论(94) 收藏 举报

今天模仿安卓QQ空间,效果如下:

打开程序的启动画面和导航页面我就不做了,大家可以模仿微信的那个做一下,很简单。这次主要做一下主页面的实现,下面是主页面的布局:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:background="@android:color/white"
  6. android:orientation="vertical">
  7. <include
  8. android:id="@+id/top_layout"
  9. layout="@layout/main"/>
  10. </LinearLayout>
里面引用了main这个布局文件,它的xml文件为:

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent">
  5. <RelativeLayout
  6. android:layout_width="fill_parent"
  7. android:layout_height="40dip"
  8. android:layout_alignParentTop="true"
  9. android:background="@drawable/navbar_bg">
  10. <TextView
  11. android:id="@+id/titltext"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:text="我的空间动态"
  15. android:textSize="20dp"
  16. android:layout_centerInParent="true"
  17. />
  18. <ImageView
  19. android:layout_width="wrap_content"
  20. android:layout_height="wrap_content"
  21. android:layout_centerInParent="true"
  22. android:src="@drawable/navbar_drop_down"
  23. android:id="@+id/bytextimage1"
  24. android:layout_toRightOf="@id/titltext"
  25. />
  26. <ImageView
  27. android:layout_width="wrap_content"
  28. android:layout_height="wrap_content"
  29. android:layout_centerInParent="true"
  30. android:src="@drawable/navbar_drop_up"
  31. android:id="@+id/bytextimage2"
  32. android:visibility="invisible"
  33. android:layout_toRightOf="@id/titltext"
  34. />
  35. <ImageView
  36. android:layout_width="wrap_content"
  37. android:layout_height="wrap_content"
  38. android:layout_alignParentRight="true"
  39. android:layout_marginTop="5dp"
  40. android:layout_marginRight="10dp"
  41. android:src="@drawable/icon_refresh_none"/>
  42. </RelativeLayout>//这个RelativeLayout是最上面“我的空间动态”那一部分的布局
  43. <FrameLayout//下面的导航栏的实现,他的背景就是灰色横条的那一部分
  44. android:layout_width="fill_parent"
  45. android:layout_height="65.32999dip"
  46. android:layout_alignParentBottom="true"
  47. android:background="@drawable/toolbar_bg">
  48. <LinearLayout//用来包含图片以及文字
  49. android:layout_width="fill_parent"
  50. android:layout_height="48.0dip"
  51. android:layout_gravity="bottom"
  52. android:baselineAligned="false"
  53. android:gravity="center_horizontal"
  54. android:orientation="horizontal">
  55. <FrameLayout//采用帧布局,这样图片和文字就可以一起显示了。当然也可以用相对布局,一个在上,一个在下。
  56. android:layout_width="fill_parent"
  57. android:layout_height="48.0dip"
  58. android:layout_weight="1.0">
  59. <ImageView
  60. android:layout_width="28.0dip"
  61. android:layout_height="28.0dip"
  62. android:layout_gravity="top|center"
  63. android:layout_marginTop="1.0dip"
  64. android:contentDescription=""
  65. android:src="@drawable/tab_timefeed_opacity"
  66. android:visibility="visible"/>
  67. <TextView
  68. android:layout_width="wrap_content"
  69. android:layout_height="wrap_content"
  70. android:layout_gravity="bottom|center"
  71. android:layout_marginBottom="6.0dip"
  72. android:text="好友动态"
  73. android:textColor="#ffffffff"
  74. android:textSize="10.0dip"
  75. android:visibility="visible"/>
  76. </FrameLayout>
  77. <FrameLayout
  78. android:layout_width="fill_parent"
  79. android:layout_height="48.0dip"
  80. android:layout_marginRight="10.0dip"
  81. android:layout_weight="1.0">
  82. <ImageView
  83. android:layout_width="27.0dip"
  84. android:layout_height="27.0dip"
  85. android:layout_gravity="top|center"
  86. android:layout_marginTop="1.0dip"
  87. android:src="@drawable/tab_feedback_opacity"
  88. android:visibility="visible"/>
  89. <TextView
  90. android:layout_width="wrap_content"
  91. android:layout_height="wrap_content"
  92. android:layout_gravity="bottom|center"
  93. android:layout_marginBottom="6.0dip"
  94. android:text="与我相关"
  95. android:textColor="#ffffffff"
  96. android:textSize="10.0dip"
  97. android:visibility="visible"/>
  98. <TextView
  99. android:layout_width="17.0dip"
  100. android:layout_height="17.0dip"
  101. android:layout_gravity="center_horizontal"
  102. android:layout_marginBottom="15.0dip"
  103. android:layout_marginLeft="10.0dip"
  104. android:background="@drawable/myhome_visitor_number"
  105. android:gravity="center_vertical"
  106. android:paddingBottom="5.0dip"
  107. android:paddingLeft="5.0dip"
  108. android:paddingRight="0.0dip"
  109. android:paddingTop="0.0dip"
  110. android:text="n"
  111. android:textColor="#ffffffff"
  112. android:textSize="13.0dip"
  113. android:visibility="visible"/>
  114. </FrameLayout>
  115. <FrameLayout
  116. android:layout_width="fill_parent"
  117. android:layout_height="wrap_content"
  118. android:layout_weight="1.0"/>
  119. <FrameLayout
  120. android:layout_width="fill_parent"
  121. android:layout_height="48.0dip"
  122. android:layout_marginLeft="10.0dip"
  123. android:layout_weight="1.0">
  124. <ImageView
  125. android:layout_width="27.0dip"
  126. android:layout_height="27.0dip"
  127. android:layout_gravity="top|center"
  128. android:layout_marginTop="1.0dip"
  129. android:src="@drawable/tab_myzone_opacity"
  130. android:visibility="visible"/>
  131. <TextView
  132. android:layout_width="wrap_content"
  133. android:layout_height="wrap_content"
  134. android:layout_gravity="bottom|center"
  135. android:layout_marginBottom="6.0dip"
  136. android:text="主页"
  137. android:textColor="#ffffffff"
  138. android:textSize="10.0dip"
  139. android:visibility="visible"/>
  140. </FrameLayout>
  141. <FrameLayout
  142. android:layout_width="fill_parent"
  143. android:layout_height="48.0dip"
  144. android:layout_weight="1.0">
  145. <ImageView
  146. android:layout_width="27.0dip"
  147. android:layout_height="27.0dip"
  148. android:layout_gravity="top|center"
  149. android:layout_marginTop="1.0dip"
  150. android:src="@drawable/tab_applist_opacity"
  151. android:visibility="visible"/>
  152. <TextView
  153. android:layout_width="wrap_content"
  154. android:layout_height="wrap_content"
  155. android:layout_gravity="bottom|center"
  156. android:layout_marginBottom="6.0dip"
  157. android:text="应用"
  158. android:textColor="#ffffffff"
  159. android:textSize="10.0dip"
  160. android:visibility="visible"/>
  161. </FrameLayout>
  162. </LinearLayout>
  163. <FrameLayout
  164. android:layout_width="wrap_content"
  165. android:layout_height="wrap_content"
  166. android:layout_gravity="center_horizontal">
  167. <ImageView
  168. android:layout_width="66.666595dip"
  169. android:layout_height="65.33328dip"
  170. android:layout_gravity="center"
  171. android:src="@drawable/toolbar_write_bg"/>
  172. </FrameLayout>
  173. <FrameLayout
  174. android:id="@+id/btn_ck"
  175. android:layout_width="65.33328dip"
  176. android:layout_height="65.33328dip"
  177. android:layout_gravity="center">
  178. <ImageView
  179. android:id="@+id/image1"
  180. android:layout_width="22.666595dip"
  181. android:layout_height="22.666595dip"
  182. android:layout_gravity="center"
  183. android:layout_marginTop="2.0dip"
  184. android:src="@drawable/toolbar_plus"/>
  185. </FrameLayout>
  186. </FrameLayout>
  187. </RelativeLayout>
上面的“我的空间动态”以及下面的圆形Button用的是PopubWindow,Activity的代码如下:

[java] view plain copy
  1. packagecom.example.imitateqqzone;
  2. importjava.util.ArrayList;
  3. importjava.util.List;
  4. importandroid.os.Bundle;
  5. importandroid.app.Activity;
  6. importandroid.content.Context;
  7. importandroid.graphics.drawable.BitmapDrawable;
  8. importandroid.view.LayoutInflater;
  9. importandroid.view.Menu;
  10. importandroid.view.View;
  11. importandroid.view.View.OnClickListener;
  12. importandroid.view.Window;
  13. importandroid.widget.AdapterView;
  14. importandroid.widget.ImageView;
  15. importandroid.widget.LinearLayout;
  16. importandroid.widget.ListView;
  17. importandroid.widget.PopupWindow;
  18. importandroid.widget.TextView;
  19. importandroid.widget.AdapterView.OnItemClickListener;
  20. importandroid.widget.Toast;
  21. publicclassImitateQQZoneextendsActivity{
  22. privatePopupWindowpopupWindow1,popupWindow2;
  23. privateListViewlv_group;
  24. privateViewview,top_layout;
  25. privateTextViewtvtitle;
  26. privateList<String>groups;
  27. //privateintscreenWidth,screenHeight,dialgoWidth,dialgoheight;
  28. privateImageViewbyTextImageView1,byTextImageView2,centerimage;
  29. //privateint[]images={R.drawable.navbar_drop_down,R.drawable.navbar_drop_up};
  30. @Override
  31. publicvoidonCreate(BundlesavedInstanceState){
  32. super.onCreate(savedInstanceState);
  33. this.requestWindowFeature(Window.FEATURE_NO_TITLE);
  34. setContentView(R.layout.activity_imitate_qqzone);
  35. top_layout=this.findViewById(R.id.top_layout);
  36. tvtitle=(TextView)top_layout.findViewById(R.id.titltext);
  37. byTextImageView1=(ImageView)top_layout.findViewById(R.id.bytextimage1);
  38. byTextImageView2=(ImageView)top_layout.findViewById(R.id.bytextimage2);
  39. centerimage=(ImageView)findViewById(R.id.image1);
  40. /*
  41. *androidviewsetVisibility():
  42. 有三个参数:Parameters:visibilityOneofVISIBLE,INVISIBLE,orGONE,想对应的三个常量值:0、4、8
  43. VISIBLE:0意思是可见的
  44. INVISIBILITY:4意思是不可见的,但还占着原来的空间
  45. GONE:8意思是不可见的,不占用原来的布局空间
  46. */
  47. tvtitle.setOnClickListener(newOnClickListener(){
  48. booleanisImage=false;
  49. publicvoidonClick(Viewv){
  50. showWindow1(v);
  51. if(isImage==false){
  52. isImage=true;
  53. byTextImageView1.setVisibility(4);
  54. byTextImageView2.setVisibility(0);
  55. }else{
  56. isImage=false;
  57. byTextImageView1.setVisibility(0);
  58. byTextImageView2.setVisibility(4);
  59. }
  60. }
  61. });
  62. centerimage.setOnClickListener(newOnClickListener(){
  63. publicvoidonClick(Viewv){
  64. showWindow2(v);
  65. }
  66. });
  67. }
  68. protectedvoidshowWindow2(Viewv){
  69. if(popupWindow2==null){
  70. LayoutInflaterlayoutInflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  71. view=layoutInflater.inflate(R.layout.pubmenu,null);
  72. popupWindow2=newPopupWindow(view,400,400);//创建一个PopuWidow对象
  73. }
  74. popupWindow2.setFocusable(true);//使其聚集
  75. popupWindow2.setOutsideTouchable(true);//设置允许在外点击消失
  76. popupWindow2.setBackgroundDrawable(newBitmapDrawable());//这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
  77. popupWindow2.showAsDropDown(v);
  78. }
  79. privatevoidshowWindow1(Viewparent){
  80. if(popupWindow1==null){
  81. LayoutInflaterlayoutInflater=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  82. view=layoutInflater.inflate(R.layout.group_list,null);
  83. lv_group=(ListView)view.findViewById(R.id.lvGroup);
  84. //加载数据
  85. groups=newArrayList<String>();
  86. groups.add("全部动态");
  87. groups.add("好友动态");
  88. groups.add("特别关心");
  89. groups.add("认证空间");
  90. GroupAdaptergroupAdapter=newGroupAdapter(this,groups);
  91. lv_group.setAdapter(groupAdapter);
  92. //创建一个PopuWidow对象
  93. popupWindow1=newPopupWindow(view,200,350);
  94. }
  95. popupWindow1.setFocusable(true);//使其聚集
  96. popupWindow1.setOutsideTouchable(true);//设置允许在外点击消失
  97. popupWindow1.setBackgroundDrawable(newBitmapDrawable());//这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
  98. //screenWidth=ImitateQQZone.this.getWindowManager().getDefaultDisplay().getWidth();
  99. //screenHeight=ImitateQQZone.this.getWindowManager().getDefaultDisplay().getHeight();
  100. //dialgoWidth=popupWindow.getWidth();
  101. //dialgoheight=popupWindow.getHeight();
  102. //intxPos=(screenWidth-dialgoWidth)/2;//显示的位置为:屏幕的宽度的一半-PopupWindow的宽度的一半
  103. //Log.i("coder","xPos:"+xPos);
  104. popupWindow1.showAsDropDown(parent);
  105. lv_group.setOnItemClickListener(newOnItemClickListener(){
  106. publicvoidonItemClick(AdapterView<?>adapterView,Viewview,
  107. intposition,longid){
  108. Toast.makeText(ImitateQQZone.this,groups.get(position),1000)
  109. .show();
  110. //switch(position){
  111. //case0:
  112. //Intentintent=newIntent(ImitateQQZone.this,
  113. //PopupWindowDemo2.class);
  114. //startActivity(intent);
  115. ///break;
  116. //default:
  117. //break;
  118. //}
  119. if(popupWindow1!=null){
  120. popupWindow1.dismiss();
  121. }
  122. }
  123. });
  124. }
  125. @Override
  126. publicbooleanonCreateOptionsMenu(Menumenu){
  127. getMenuInflater().inflate(R.menu.activity_imitate_qqzone,menu);
  128. returntrue;
  129. }
  130. }
其他的布局文件我就不贴出了,需要代码的可以@我或在下面留言,这只是个Demo,因为时间关系,还有很多细节没有实现。大家可以在我的基础上继续完善。

下载地址


更多相关文章

  1. android ListView内数据的动态添加与删除
  2. 阻止dialog消失的方法 (Android(安卓)Platform)
  3. Android(安卓)Handler线程间通信机制分析
  4. android简单的动态控制软键盘的显隐
  5. android动态布局方法总结
  6. 类似股票的实时动态折线图
  7. Android(安卓)R- CarAudioService之registerAudioPolicy动态注册
  8. Android动态添加布局
  9. android动态生成控件

随机推荐

  1. Android中使用ListView以及在Listview中
  2. 从主流音乐应用程序中拔身出来,试试 Rocke
  3. 精品软件 推荐 铁路订票网站12306手机订
  4. android技术篇(二)解锁System分区
  5. android开发学习如何一体化?从入门到高端
  6. 使用java来做Kinect开发
  7. Nokia 为何只做 Windows Phone :我怕 Andr
  8. 详解Android首选项框架的使用实例
  9. 开发者应如何看待iOS平台和Android平台
  10. kxte9应用局限