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

  

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@android:color/white"android:orientation="vertical" ><includeandroid:id="@+id/top_layout"layout="@layout/main" /></LinearLayout>

里面引用了main这个布局文件,它的xml文件为:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><RelativeLayout android:layout_width="fill_parent"android:layout_height="40dip"android:layout_alignParentTop="true"android:background="@drawable/navbar_bg" ><TextView android:id="@+id/titltext"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="我的空间动态"android:textSize="20dp"android:layout_centerInParent="true"/><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:src="@drawable/navbar_drop_down"android:id="@+id/bytextimage1"android:layout_toRightOf="@id/titltext"/><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:src="@drawable/navbar_drop_up"android:id="@+id/bytextimage2"android:visibility="invisible"android:layout_toRightOf="@id/titltext"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_marginTop="5dp"android:layout_marginRight="10dp"android:src="@drawable/icon_refresh_none" /></RelativeLayout>//这个RelativeLayout是最上面“我的空间动态”那一部分的布局<FrameLayout   //下面的导航栏的实现,他的背景就是灰色横条的那一部分android:layout_width="fill_parent"android:layout_height="65.32999dip"android:layout_alignParentBottom="true"android:background="@drawable/toolbar_bg" ><LinearLayout //用来包含图片以及文字android:layout_width="fill_parent"android:layout_height="48.0dip"android:layout_gravity="bottom"android:baselineAligned="false"android:gravity="center_horizontal"android:orientation="horizontal" ><FrameLayout //采用帧布局,这样图片和文字就可以一起显示了。当然也可以用相对布局,一个在上,一个在下。android:layout_width="fill_parent"android:layout_height="48.0dip"android:layout_weight="1.0" ><ImageViewandroid:layout_width="28.0dip"android:layout_height="28.0dip"android:layout_gravity="top|center"android:layout_marginTop="1.0dip"android:contentDescription=""android:src="@drawable/tab_timefeed_opacity"android:visibility="visible" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom|center"android:layout_marginBottom="6.0dip"android:text="好友动态"android:textColor="#ffffffff"android:textSize="10.0dip"android:visibility="visible" /></FrameLayout><FrameLayoutandroid:layout_width="fill_parent"android:layout_height="48.0dip"android:layout_marginRight="10.0dip"android:layout_weight="1.0" ><ImageViewandroid:layout_width="27.0dip"android:layout_height="27.0dip"android:layout_gravity="top|center"android:layout_marginTop="1.0dip"android:src="@drawable/tab_feedback_opacity"android:visibility="visible" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom|center"android:layout_marginBottom="6.0dip"android:text="与我相关"android:textColor="#ffffffff"android:textSize="10.0dip"android:visibility="visible" /><TextViewandroid:layout_width="17.0dip"android:layout_height="17.0dip"android:layout_gravity="center_horizontal"android:layout_marginBottom="15.0dip"android:layout_marginLeft="10.0dip"android:background="@drawable/myhome_visitor_number"android:gravity="center_vertical"android:paddingBottom="5.0dip"android:paddingLeft="5.0dip"android:paddingRight="0.0dip"android:paddingTop="0.0dip"android:text="n"android:textColor="#ffffffff"android:textSize="13.0dip"android:visibility="visible" /></FrameLayout><FrameLayout  android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1.0" /><FrameLayoutandroid:layout_width="fill_parent"android:layout_height="48.0dip"android:layout_marginLeft="10.0dip"android:layout_weight="1.0" ><ImageViewandroid:layout_width="27.0dip"android:layout_height="27.0dip"android:layout_gravity="top|center"android:layout_marginTop="1.0dip"android:src="@drawable/tab_myzone_opacity"android:visibility="visible" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom|center"android:layout_marginBottom="6.0dip"android:text="主页"android:textColor="#ffffffff"android:textSize="10.0dip"android:visibility="visible" /></FrameLayout><FrameLayoutandroid:layout_width="fill_parent"android:layout_height="48.0dip"android:layout_weight="1.0" ><ImageViewandroid:layout_width="27.0dip"android:layout_height="27.0dip"android:layout_gravity="top|center"android:layout_marginTop="1.0dip"android:src="@drawable/tab_applist_opacity"android:visibility="visible" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="bottom|center"android:layout_marginBottom="6.0dip"android:text="应用"android:textColor="#ffffffff"android:textSize="10.0dip"android:visibility="visible" /></FrameLayout></LinearLayout><FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal" ><ImageViewandroid:layout_width="66.666595dip"android:layout_height="65.33328dip"android:layout_gravity="center"android:src="@drawable/toolbar_write_bg" /></FrameLayout><FrameLayoutandroid:id="@+id/btn_ck"android:layout_width="65.33328dip"android:layout_height="65.33328dip"android:layout_gravity="center" ><ImageViewandroid:id="@+id/image1"android:layout_width="22.666595dip"android:layout_height="22.666595dip"android:layout_gravity="center"android:layout_marginTop="2.0dip"android:src="@drawable/toolbar_plus" /></FrameLayout></FrameLayout>
</RelativeLayout>

上面的“我的空间动态”以及下面的圆形Button用的是PopubWindow,Activity的代码如下:

package com.example.imitateqqzone;import java.util.ArrayList;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;public class ImitateQQZone extends Activity {private PopupWindow popupWindow1,popupWindow2;private ListView lv_group;private View view, top_layout;private TextView tvtitle;private List<String> groups;//private int screenWidth,screenHeight,dialgoWidth,dialgoheight;private ImageView byTextImageView1,byTextImageView2,centerimage;//private int[] images={R.drawable.navbar_drop_down,R.drawable.navbar_drop_up};@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_imitate_qqzone);top_layout = this.findViewById(R.id.top_layout);tvtitle = (TextView) top_layout.findViewById(R.id.titltext);byTextImageView1=(ImageView) top_layout.findViewById(R.id.bytextimage1);byTextImageView2=(ImageView) top_layout.findViewById(R.id.bytextimage2);centerimage=(ImageView) findViewById(R.id.image1);/** android view setVisibility():有三个参数:Parameters:visibility One of VISIBLE, INVISIBLE, or GONE,想对应的三个常量值:0、4、8VISIBLE:0  意思是可见的INVISIBILITY:4 意思是不可见的,但还占着原来的空间GONE:8  意思是不可见的,不占用原来的布局空间 */tvtitle.setOnClickListener(new OnClickListener() {boolean isImage=false;public void onClick(View v) {showWindow1(v);if(isImage==false){isImage=true;byTextImageView1.setVisibility(4);byTextImageView2.setVisibility(0);}else{isImage=false;byTextImageView1.setVisibility(0);byTextImageView2.setVisibility(4);}}});centerimage.setOnClickListener(new OnClickListener() {public void onClick(View v) {showWindow2(v);}});}protected void showWindow2(View v) {if (popupWindow2 == null) {LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);view = layoutInflater.inflate(R.layout.pubmenu, null);    popupWindow2 = new PopupWindow(view, 400, 400);// 创建一个PopuWidow对象} popupWindow2.setFocusable(true);    // 使其聚集     popupWindow2.setOutsideTouchable(true);// 设置允许在外点击消失popupWindow2.setBackgroundDrawable(new BitmapDrawable());// 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景    popupWindow2.showAsDropDown(v);}private void showWindow1(View parent) {     if (popupWindow1 == null) {LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);view = layoutInflater.inflate(R.layout.group_list, null);lv_group = (ListView) view.findViewById(R.id.lvGroup);// 加载数据groups = new ArrayList<String>();groups.add("全部动态");groups.add("好友动态");groups.add("特别关心");groups.add("认证空间");GroupAdapter groupAdapter = new GroupAdapter(this, groups);lv_group.setAdapter(groupAdapter);// 创建一个PopuWidow对象popupWindow1 = new PopupWindow(view, 200, 350);}popupWindow1.setFocusable(true);  // 使其聚集     popupWindow1.setOutsideTouchable(true);// 设置允许在外点击消失popupWindow1.setBackgroundDrawable(new BitmapDrawable());// 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景//screenWidth = ImitateQQZone.this.getWindowManager().getDefaultDisplay().getWidth();//screenHeight = ImitateQQZone.this.getWindowManager().getDefaultDisplay().getHeight();//dialgoWidth = popupWindow.getWidth();//dialgoheight = popupWindow.getHeight();//int xPos =(screenWidth-dialgoWidth)/2;// 显示的位置为:屏幕的宽度的一半-PopupWindow的宽度的一半//Log.i("coder", "xPos:" + xPos);popupWindow1.showAsDropDown(parent);lv_group.setOnItemClickListener(new OnItemClickListener() {public void onItemClick(AdapterView<?> adapterView, View view,int position, long id) {Toast.makeText(ImitateQQZone.this, groups.get(position), 1000).show();// switch (position) {// case 0:// Intent intent = new Intent(ImitateQQZone.this,// PopupWindowDemo2.class);// startActivity(intent);// /break;// default:// break;// }if (popupWindow1 != null) {popupWindow1.dismiss();}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_imitate_qqzone, menu);return true;}
}

其他的布局文件我就不贴出了,需要代码的可以@我或在下面留言,这只是个Demo,因为时间关系,还有很多细节没有实现。大家可以在我的基础上继续完善。

 下载地址

Android仿QQ空间相关推荐

  1. Android仿QQ空间底部菜单

    之前曾经在网上看到Android仿QQ空间底部菜单的Demo,发现这个Demo有很多Bug,布局用了很多神秘数字.于是研究了一下QQ空间底部菜单的实现,自己写了一个,供大家参考.效果如下图所示:  点 ...

  2. Android仿QQ空间底栏

    继上一篇仿新浪微博底栏,我们在写个仿QQ空间底栏的效果. 先看主布局文件: <RelativeLayout xmlns:android="http://schemas.android. ...

  3. Android仿QQ空间二级评论列表

    之前项目中产品需求带二级的评论列表,首先想到是QQ空间评论列表. 先上效果图 下面我们来分析一下布局结构,首先一级列表是listview,然后二级列表也可以有多条,为了省事我只添加了一条,第一反应是l ...

  4. android仿qq动态,Android仿QQ空间主页面的实现

    今天模仿安卓QQ空间,效果如下: 打开程序的启动画面和导航页面我就不做了,大家可以模仿微信的那个做一下,很简单.这次主要做一下主页面的实现,下面是主页面的布局: android:layout_widt ...

  5. android写qq动态界面,Android_Android仿QQ空间主页面的实现,今天模仿安卓QQ空间,效果如 - phpStudy...

    Android仿QQ空间主页面的实现 今天模仿安卓QQ空间,效果如下: 打开程序的启动画面和导航页面我就不做了,大家可以模仿微信的那个做一下,很简单.这次主要做一下主页面的实现,下面是主页面的布局: ...

  6. 【Android UI设计与开发】第09期:底部菜单栏(四)Fragment+PopupWindow仿QQ空间最新版底部菜单栏

    转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9023451          在今天的这篇文章当中,我依然会以实战加理论结合 ...

  7. android弹窗使用总结,高仿QQ空间操作弹窗

    android弹窗一共有两种方式,一种是dialog及其子类,另一种是popupwindow:Dialog及其子类尤其AlertDialog是最常用的,也是最自由的一种. **Popupwindow与 ...

  8. java 仿qq空间_仿QQ空间和微信朋友圈,高解耦高复用高灵活

    先看看效果: 用极少的代码实现了 动态详情 及 二级评论 的 数据获取与处理 和 UI显示与交互,并且高解耦.高复用.高灵活. 动态列表界面MomentListFragment支持 下拉刷新与上拉加载 ...

  9. 仿QQ空间图片放缩查看

    仿QQ空间图片放缩查看 仿QQ空间图片放缩查看,点击图片从原位置放大到全屏,后退从全屏缩小到原位置,效果非常好. 下载地址:http://www.devstore.cn/code/info/830.h ...

  10. 高仿QQ空间项目实战开发(带服务器端程序)

    大家好,今天我在这里分享一个小程序.高仿QQ空间的APP,这里给大家分享一个安卓APP和PHP写的服务器程序.想提高安卓开发能力或安卓和后台服务器一起做的初学者值得一看,老鸟跳过. 接下来我们看看效果 ...

最新文章

  1. RTT的线程同步篇——事件
  2. 黄聪:is_file和file_exists效率比较
  3. 用Scheme写Scheme编译器(三):一元运算
  4. 8.Linux 高性能服务器编程 --- 高性能服务器程序框架
  5. java 学习笔记-基础算法(七)
  6. 汽车品牌查询及车型大全查询
  7. java偏向锁_Java锁事之偏向锁
  8. flashfxp和任务计划自动定时ftp备份
  9. 罗振宇2021“时间的朋友·长大以后”跨年演讲全文无删减整理,核心观点、大纲提炼
  10. 使用什么协议扫描服务器端口,服务器端口扫描
  11. HJ82 将真分数分解为埃及分数(需要知道求埃及数的数学方法)
  12. Win7——无Internet访问权限
  13. 光猫+路由器如何映射端口
  14. C#输出字符串组合排列
  15. 初识中央处理器CPU
  16. 谈谈EventTime以及Watermark
  17. 开发企业官网就用这个基于SpringBoot的CMS系统,真香
  18. Python数据分析入门笔记5——数据预处理之异常值
  19. 一次递减代码matlab,DEA算法学习系列之三:一次性求解CCR模型所有DMU参数——效率、规模效益、有效性特征、调整值的matlab代码...
  20. 使用GraalVM实现java调用python脚本

热门文章

  1. WARNING: AllowZoneDrifting is enabled.
  2. 嵌入式培训怎么学?嵌入式开发培训学什么内容
  3. 上网行为管理软件的功能
  4. 研究生做实验时被炸伤致残!法院判决:驳回高校上诉,赔偿162万!
  5. html中颜色取样器工具,PS颜色取样器工具使用方法
  6. 寂寞情来情去——忆纳兰词
  7. WordStream:谷歌广告各指标分析
  8. 利用 cookie,实现在html页面 记住我 功能
  9. 关于单链表中temp.next、head.next的理解
  10. 《失业的程序员》(十二):潜意识的智商 .