易信,它的UI还是很简洁,因此本人想模仿一下它,用了一天的时候来研究它的资源文件,终于被我写出来。先看下效果图吧。
 
 

(一)首页的标题

 
 
main_title.xml
<?xml version="1.0" encoding= "utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="44dip"
android:gravity="center_vertical"
android:padding="0.0px" > <ImageView
android:id="@+id/rlCommenTitleBG"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/comm_title_bg" /> <TextView
android:id="@+id/ivTitleName"
style="@style/A1_Font"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:ellipsize="end"
android:gravity="center"
android:paddingLeft="96.0dip"
android:paddingRight="96.0dip"
android:singleLine="true"
android:text="@string/app_name" /> <ImageButton
android:id="@+id/ivTitleBtnLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dip"
android:layout_centerVertical="true"
android:background="@drawable/showleft_selector"
android:gravity="center"
android:includeFontPadding="false" /> <ImageButton
android:id="@+id/ivTitleBtnRigh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:background="@drawable/showright_selector"
android:gravity="center"
android:layout_marginRight="5dip"
android:includeFontPadding="false" /> </RelativeLayout>
(二) 左边的滑动菜单实现
 
 
 

通过SlidingMenu库与Fragment来实现当前最为流行的侧滑模式。其实涉及到的知识点有:

1.SlidingMenu
2.Fragment

准备工作: 马上去下载这个开源库,https://github.com/jfeinstein10/SlidingMenu
下载后的SlidingMenu文件,只需要在eclise导入library项目就行了。
 
 

导入后,项目名默认就是library,为了好看,我就把它改成了slidingmenu_library。注意,这项目只是一个库哦。待会你要自己新建一个项目里头引用它。
 
 

接下来就是建立我们自己的demo项目啦。
记得建完一个新项目后,请添加刚刚下载的Slidingmenu库。方法: 右键项目--》Properties--》Android--》点击Add,就可以添加库
 
 

开始项目的讲解:
 
 

MainActivity: 项目的主类,左边的菜单是在主类初始化的。
Fragment_friend: 朋友圈功能的内容类
Fragment_setting: 设置功能的内容类
Fragment_yixin: 易信功能的内容类
LeftSlidingMenuFragment: 左边菜单
RoundedImageview : 圆角头像自定义类
 

主类的布局: activity_main.xml,只需要放一个FrameLayout即可以
 
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
xmlns:tools ="http://schemas.android.com/tools"
android:layout_width ="match_parent"
android:layout_height ="match_parent"
android:background ="@color/white"
android:clickable ="true"
android:orientation ="vertical" > <include layout= "@layout/main_title" android:focusable ="true" />
<FrameLayout
android:id ="@+id/content_frame"
android:layout_width ="match_parent"
android:layout_height ="match_parent" /> </ LinearLayout>
主类: MainActivity.Java  ,要继承SlidingFragmentActivity
 
public class MainActivity extends SlidingFragmentActivity implementsOnClickListener{
protected SlidingMenu mSlidingMenu ;
private ImageButton ivTitleBtnLeft ;
private Fragment mContent ;
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
initSlidingMenu();
setContentView(R.layout. activity_main );
initView();
} private void initView() {
ivTitleBtnLeft = (ImageButton)this .findViewById(R.id. ivTitleBtnLeft);
ivTitleBtnLeft .setOnClickListener( this); } //初始化左侧菜单
private void initSlidingMenu() {
mContent = new Fragment_yixin();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id. content_frame , mContent )
.commit(); setBehindContentView(R.layout. main_left_layout );//设置左边的菜单布局
FragmentTransaction mFragementTransaction = getSupportFragmentManager()
.beginTransaction();
Fragment mFrag = new LeftSlidingMenuFragment();
mFragementTransaction.replace(R.id. main_left_fragment , mFrag);
mFragementTransaction.commit();
mSlidingMenu = getSlidingMenu();
mSlidingMenu .setMode(SlidingMenu. LEFT); // 设置是左滑还是右滑,还是左右都可以滑,我这里只做了左滑
mSlidingMenu .setBehindOffsetRes(R.dimen. slidingmenu_offset); // 设置菜单宽度
mSlidingMenu .setFadeDegree(0.35f);// 设置淡入淡出的比例
mSlidingMenu .setTouchModeAbove(SlidingMenu. TOUCHMODE_FULLSCREEN); //设置手势模式
mSlidingMenu .setShadowDrawable(R.drawable. shadow); // 设置左菜单阴影图片
mSlidingMenu .setFadeEnabled( true); // 设置滑动时菜单的是否淡入淡出
mSlidingMenu .setBehindScrollScale(0.333f);// 设置滑动时拖拽效果 } @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ivTitleBtnLeft :
//点击标题左边按钮弹出左侧菜单
mSlidingMenu .showMenu( true);
break ;
default :
break ;
} } /**
* 左侧菜单点击切换首页的内容
*/
public void switchContent(Fragment fragment) {
mContent = fragment;
getSupportFragmentManager()
.beginTransaction()
.replace(R.id. content_frame , fragment)
.commit();
getSlidingMenu().showContent();
} }

左侧菜单: LeftSlidingMenuFragment

public class LeftSlidingMenuFragment extends Fragment implements OnClickListener{
private View yixinBtnLayout; //左侧菜单的易信功能
private View circleBtnLayout; //左侧菜单的朋友圈功能
private View settingBtnLayout; //左侧菜单的设置功能 @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); } @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_left_fragment, container,
false);
yixinBtnLayout = view.findViewById(R.id.yixinBtnLayout);
yixinBtnLayout.setOnClickListener(this);
circleBtnLayout = view.findViewById(R.id.circleBtnLayout);
circleBtnLayout.setOnClickListener(this);
settingBtnLayout = view.findViewById(R.id.settingBtnLayout);
settingBtnLayout.setOnClickListener(this); System.out.println();
return view;
} @Override
public void onClick(View v) {
Fragment newContent = null;
switch (v.getId()) {
case R.id.yixinBtnLayout: //易信的点击事件
newContent = new Fragment_yixin();
yixinBtnLayout.setSelected(true);
circleBtnLayout.setSelected(false);
settingBtnLayout.setSelected(false); break;
case R.id.circleBtnLayout: //朋友圈的点击事件
newContent = new Fragment_friend();
yixinBtnLayout.setSelected(false);
circleBtnLayout.setSelected(true);
settingBtnLayout.setSelected(false);
break;
case R.id.settingBtnLayout: //设置的点击事件
newContent = new Fragment_setting();
yixinBtnLayout.setSelected(false);
circleBtnLayout.setSelected(false);
settingBtnLayout.setSelected(true);
break;
default:
break;
} if (newContent != null)
switchFragment(newContent); } /*
* 切换到不同的功能内容
*/
private void switchFragment(Fragment fragment) {
if (getActivity() == null)
return;
MainActivity ra = (MainActivity) getActivity();
ra.switchContent(fragment); }
}
左侧菜单用到两个布局: main_left_layout.xml 和main_left_fragment.xml
main_left_fragment.xml 是要嵌入到main_left_layout显示具体的UI元素,main_left_layout.xml是一个根布局

main_left_layout.xml 
 
<? xml version ="1.0" encoding= "utf-8" ?>
< FrameLayout xmlns:android ="http://schemas.android.com/apk/res/android"
android:id ="@+id/main_left_fragment"
android:layout_width ="match_parent"
android:layout_height ="match_parent"
android:background ="@color/white" > </ FrameLayout>
main_left_fragment.xml
<? xml version ="1.0" encoding= "utf-8" ?>
< ScrollView android:background ="@color/tools_box_bg" android:scrollbars ="none" android:layout_width ="fill_parent" android:layout_height ="fill_parent"
xmlns:android ="http://schemas.android.com/apk/res/android" >
<LinearLayout android:orientation= "vertical" android:id ="@+id/llRoot"android:layout_width ="fill_parent" android:layout_height ="wrap_content" >
< com.chaowen.yixin.RoundedImageView android:layout_gravity ="center_horizontal" android:id ="@+id/headImageView" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:layout_marginTop = "25.0dip" android:src ="@drawable/head_default_yixin" android:adjustViewBounds = "true" android:maxHeight ="80dip" android:maxWidth= "80dip" />
< TextView android:textSize ="16.0sp" android:textColor ="#ffccccc6"android:layout_gravity ="center_horizontal" android:id ="@+id/nickNameTextView"android:layout_width ="wrap_content" android:layout_height ="wrap_content"android:layout_marginTop = "10.0dip" android:text ="511644784" />
< TextView android:textSize ="12.0sp" android:textColor ="#ffa8a8a3"android:layout_gravity ="center_horizontal" android:id ="@+id/yixinCodeTextView" android:layout_width ="wrap_content" android:layout_height ="wrap_content"android:layout_marginLeft = "10.0dip" android:layout_marginTop = "6.0dip"android:layout_marginRight = "10.0dip" android:layout_marginBottom = "10.0dip" />
< include android:id ="@+id/yixinBtnLayout" layout ="@layout/toolbox_item_yixin" />
< include android:id ="@+id/circleBtnLayout" layout ="@layout/toolbox_item_friend" />
< include android:id ="@+id/settingBtnLayout" layout ="@layout/toolbox_item_setting" />
< View android:background ="#ff1c1c1b" android:layout_width ="fill_parent" android:layout_height ="1.3299866dip" />
< View android:background ="#ff474745" android:layout_width ="fill_parent" android:layout_height ="1.0px" />
< TextView android:textSize ="12.0sp" android:textColor ="#ff999994"android:gravity ="center" android:layout_gravity ="bottom|center" android:id ="@+id/inviteFriendBtnLayout" android:background ="@drawable/tools_box_invite_btn_selector" android:layout_width= "wrap_content"android:layout_height ="wrap_content" android:layout_marginTop = "70.0dip"android:text ="邀请好友" />
</LinearLayout >
</ ScrollView>
com.chaowen.yixin.RoundedImageView 是一个圆形头像的自定义imageView类哦。
后面会继续更新UI。还没做完的,呵呵。
 

http://pan.baidu.com/share/link?shareid=3913241068&uk=1863281063

  

模仿易信的UI的更多相关文章

  1. Android UI开发第四十二篇——实现实现易信的圆形图像和对话列表的图像显示部分

    显示图像时,很多个性化显示,圆形或圆角.气泡等等,我们这一篇文章探讨一下圆形和气泡的显示,仿照易信中的实现,先看下效果图: 代码: public class RoundImageView extend ...

  2. CRM客户关系管理系统 北京易信软科信息技术有限公司

    北京易信软科信息技术有限公司 推出大型erp系统,库存管理系统,客户关系管理系统,车辆登记管理系统,员工管理系统,采购管理系统,销售管理系统,为您的企业提供最优质的产品服务 北京易信软科您可信赖的北京 ...

  3. 北京易信软科信息技术有限公司 问卷调查管理系统V2.0

    北京易信软科信息技术有限公司 问卷调查管理系统V2.0 支持题目模板配置.题型模板配置.选项模板配置,报表查询功能配置 按月建表功能 运用java开发.velocity技术实现页面加载功能,高性能,高 ...

  4. 北京易信软科信息技术有限公司-仓库管理系统V1.0

    北京易信软科您可信赖的北京软件研发服务商,公司团队有多年应用软件设计制作及开发经验,为各大企业提供软件设计.制作及维护服务,为用户提供可靠高效的应用服务平台 我们通过专业的项目实施流程,为您提供优质的 ...

  5. 从iMessage到微信,QQ离线短信服务,米聊,易信

    把iMessage.米聊.QQ离线短信服务.微信.易信放到一下,毫无疑问大家能够看出他们的共同点,iMessage与米聊我们就不用说了,有雷布斯的存在就有米聊的存在,QQ离线短信服务是提供给QQ会员的 ...

  6. JAVA调用易信接口向指定好友推送消息(二)POST测试

    易信的API接口做的还算简单 http://open.yixin.im/document/oauth/api 根据指南上的步骤,利用易信提供的测试ID AppID(client_id): yxbbd0 ...

  7. JAVA调用易信接口向指定好友推送消息(一)背景需求

    众所周知,中国电信内部一直使用易信群进行交流 各种工作交流都在易信群里面沟通 包括投诉处理,障碍报修,拍照上传 最重要的就是每天甚至每个时点的指标完成情况的通报 所以只能用4个字来形容 String ...

  8. 微信/易信公共平台开发(二):自定义菜单的PHP实现(提供源码)

    微信把公众号分成订阅号和服务号两种,服务号可以自定义菜单, 菜单大大方便了用户操作. 比如:公众服务号 "中国南方航空" 的自定义菜单如下图: 点菜单就可以直接进入操作了,方便! ...

  9. “易信”今日正式更新至V1.1版

    热门移动通讯社交应用“易信”今日正式更新至V1.1版,目前用户已可在苹果AppStore和各大Android商店下载.新版本主要包括三大变化:开通公众平台.提供外部分享.强化社交安全,此外包含好友关系 ...

随机推荐

  1. [CAMCOCO][C#]我的系统架构 总图

    之前写的感觉有点乱,把架构的设计图先放上来吧,对照着说. CAMCOCO架构能够支持的模型: 1.B/S程序,比如CRM什么的,和访问普通网站没什么区别,都是从WEB服务器上进行操作: 2.APP的服 ...

  2. iOS学习笔记--OC系列(1)

    前言 从学校毕业进入公司工作已经第3个年头了,回顾这3年的经历,有种迷茫的感觉.在公司我主要是做零售业公司的系统维护,接触的主要是Oracle的Database的东西.但是业务知识和oracle,都没 ...

  3. Application 统计在线人数

    MVC 统计在线人数: protected void Application_Start() { Application[; AreaRegistration.RegisterAllAreas(); ...

  4. .Net 接连 Oracle 数据库(Winform)

    之前一直是使用Asp.Net 连接 Oracle 10g,最近想写个小程序,所以选择了 Winform.折腾半天后,才发现 Winform 与 Asp.Net 连接 Oracle 是有些许区别的. 区 ...

  5. 10 个超酷的 HTML5/CSS3 应用及源码

    1.CSS3密码强度验证表单,码速表样式 我们在网站上注册会员时,输入一个强大较大的密码会大大增加帐号安全性,那么什么样的密码才比较安全呢?这款CSS3密码强度验证表单插件可以提示你当前输入密码的安全 ...

  6. CP30 ---DataSource连接池的创建过程

    1.参看CP30文档quickStart 如下具体创建步骤 public DataSource getDs() throws Exception { //创建连接池对象 ComboPooledData ...

  7. ADO.NET笔记——使用DataSet返回数据

    相关知识: DataSet和DataAdapter的内部结构: DataSet通过DataAdapter从数据库中获取数据 DataSet对象内部包括一个集合(Tables),也就是可以拥有多个表(D ...

  8. CentOS6.5升级手动安装gcc4.8.2

    一.简易安装 操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2 不能通过yum的方法升级,需要自己手动下载安装包并编译 1.1 获取安装包并 ...

  9. Lucene使用IKAnalyzer分词实例 及 IKAnalyzer扩展词库

    文章转载自:http://www.cnblogs.com/dennisit/archive/2013/04/07/3005847.html 方案一: 基于配置的词典扩充 项目结构图如下: IK分词器还 ...

  10. HTML5-WebWorker

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...