仿的微信总结

原创 2015年11月17日 19:07:11

看了鸿洋大神做的微信5.1版本的东西,自己模仿着做了一下,现在总结一下。

有相应的代码,可以下载

微信的第一个RelativeLayout

在里面摄者一个LinearLayout宽度设置为fill_parent,高度设置为40dp,里面嵌套一个LinearLayout,这个LinearLayout由一个ImageView,Textview组成




第二个LinearLayout由三个ImageButton组成



微信的第二个LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="50dp"
    android:background="#eee">
<LinearLayout
    android:id="@+id/id_ll_chat"
    android:layout_height="47dp"
    android:layout_width="fill_parent"
    android:orientation="horizontal">
    <LinearLayout android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:gravity="center">
        <TextView android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="聊天"
            android:textColor="#000000"
            android:id="@+id/tl"/>
        </LinearLayout>

    <LinearLayout android:layout_height="fill_parent"
                  android:layout_width="fill_parent"
                  android:layout_weight="1"
                  android:orientation="horizontal"
                  android:gravity="center">
        <TextView android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:text="发现"
                  android:textColor="#000000"
            android:id="@+id/tf"/>
        </LinearLayout>
        <LinearLayout android:layout_height="fill_parent"
                      android:layout_width="fill_parent"
                      android:layout_weight="1"
                      android:orientation="horizontal"
                      android:gravity="center">
        <TextView android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:text="通讯录"
                  android:textColor="#000000"
            android:id="@+id/tt"/>
    </LinearLayout>
    </LinearLayout>
    <ImageView
        android:id="@+id/id_iv_tabline"
        android:layout_width="127dp"
        android:layout_height="3dp"
        android:background="@drawable/tabline" />

</LinearLayout>


这个LinearLayout里嵌套了三个LinearLayout,这三个LinearLayout里,每个都有一个TextView,在最后的结尾加一个蓝色的条

下面是主avtivity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <include layout="@layout/shangyi"/>
    <include layout="@layout/shanger"/>
    <android.support.v4.view.ViewPager
        android:id="@+id/id_viewpager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>


在里面加入这两个布局,在加入一个viewpager用于加入下面的可滑动的页面

下面创建几个布局文件

里面只有textView,这几个布局文件的用处就是为fragment提供模板,再分别创建相应的.java文件,

下面我们在MainActivity里进行设置

先要屏蔽actionbar

我们可以用这几个方法

1.getActionbar().hide();

2.或在androidmanifest中设置设置android:theme=""

@style/Theme.AppCompat.Light.NoActionBar

下面是完整代码

package com.example.window7.weixin;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends FragmentActivity {
    private ViewPager mViewPager;
    private FragmentPagerAdapter mAdapter;
    private List<Fragment> mDatas;
    private TextView mlTextView;
    private TextView mfTextView;
    private TextView mtTextView;
    private LinearLayout mChatLinearLayout;
    private ImageView mTabline;
    private int mScreen1_3;
    private int mCurrentPageIndex;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initTabLine();
        initView();
    }
    public void initTabLine()
    {
        mTabline=(ImageView)findViewById(R.id.id_iv_tabline);
        //shezhi gensuitiao
        Display display=getWindow().getWindowManager().getDefaultDisplay();
        //shezhi display,dedao windoe.manager.defaultdisplay
        DisplayMetrics outMetrics=new DisplayMetrics();
        //shezhi displayMetrics new displayMetrics
        display.getMetrics(outMetrics);
        //dedao getMetrics(outMetrics)
        //huozhe Display display=getWidow().getWindowManager().getDefaultDisplay;
        mScreen1_3 = outMetrics.widthPixels / 3;
        //tede kuanduwei zongpingde 1/3;
        ViewGroup.LayoutParams lp = mTabline.getLayoutParams();
        //dedao layoutParams dexinxi
        lp.width = mScreen1_3;
        //duitajinxing shezhi zhi
        mTabline.setLayoutParams(lp);
    }
    private void initView()
    {
        mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
        // shezhi viewpager
        mlTextView = (TextView) findViewById(R.id.tl);
        //xianglimianjiaru gege textview;
        mfTextView = (TextView) findViewById(R.id.tf);
        //xianglimianjiaru gege textview;
        mtTextView = (TextView) findViewById(R.id.tt);
        //xianglimianjiaru gege textview;
        mChatLinearLayout = (LinearLayout) findViewById(R.id.id_ll_chat);
        //ba linearlayout jiaru

        mDatas = new ArrayList<Fragment>();
        //shezhi yige xinde arrayList;

        YiFragment tab01 = new YiFragment();
        //jiang gege Fragment xinjian;
        ErFragment tab02 = new ErFragment();
        //jiang gege Fragment xinjian;
        SanFragment tab03 = new SanFragment();
        //jiang gege Fragment xinjian;

        mDatas.add(tab01);
        //jiang ge ge fragment jiadao list li
        mDatas.add(tab02);
        //jiang ge ge fragment jiadao list li
        mDatas.add(tab03);
        //jiang ge ge fragment jiadao list li

        mAdapter = new FragmentPagerAdapter(getSupportFragmentManager())
        {
            @Override
            public int getCount()
            {
                return mDatas.size();
            }

            @Override
            public Fragment getItem(int arg0)
            {
                return mDatas.get(arg0);
            }
        };
        mViewPager.setAdapter(mAdapter);
        //viewpager diaoyaong setAdapter(mAdapter);

        mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener()
        {
            @Override
            public void onPageSelected(int position)
            {
                resetTextView();
                switch (position)
                {
                    case 0:
                        mlTextView.setTextColor(Color.parseColor("#008000"));
                        break;
                    case 1:
                        mfTextView.setTextColor(Color.parseColor("#008000"));
                        break;
                    case 2:
                        mtTextView.setTextColor(Color.parseColor("#008000"));
                        break;

                }

                mCurrentPageIndex = position;

            }
            @Override
            public void onPageScrolled(int position, float positionOffset,
                                       int positionOffsetPx)
            {
                Log.e("TAG", position + " , " + positionOffset + " , "
                        + positionOffsetPx);

                LinearLayout.LayoutParams lp = (android.widget.LinearLayout.LayoutParams) mTabline
                        .getLayoutParams();

                if (mCurrentPageIndex == 0 && position == 0)// 0->1
                {
                    lp.leftMargin = (int) (positionOffset * mScreen1_3 + mCurrentPageIndex
                            * mScreen1_3);
                } else if (mCurrentPageIndex == 1 && position == 0)// 1->0
                {
                    lp.leftMargin = (int) (mCurrentPageIndex * mScreen1_3 + (positionOffset - 1)
                            * mScreen1_3);
                } else if (mCurrentPageIndex == 1 && position == 1) // 1->2
                {
                    lp.leftMargin = (int) (mCurrentPageIndex * mScreen1_3 + positionOffset
                            * mScreen1_3);
                } else if (mCurrentPageIndex == 2 && position == 1) // 2->1
                {
                    lp.leftMargin = (int) (mCurrentPageIndex * mScreen1_3 + ( positionOffset-1)
                            * mScreen1_3);
                }
                mTabline.setLayoutParams(lp);

            }

            @Override
            public void onPageScrollStateChanged(int arg0)
            {
                // TODO Auto-generated method stub

            }
        });

    }

    protected void resetTextView()
    {
        mlTextView.setTextColor(Color.BLACK);
        mfTextView.setTextColor(Color.BLACK);
        mtTextView.setTextColor(Color.BLACK);
    }

}

扫描二维码研究总结(高仿微信扫一扫,轻松实现定制扫描界面)

在正文之前说点题外话,加上这篇我已经写了3篇博客了,其实我写博客的初衷不是想证明自己有多牛,并且我也只是从事安卓开发只有半年时间的小渣,但是不想成为大牛的渣不是好渣,所以我想通过博客把工作学习中遇到的...

仿微信界面,并简单总结TextView控件

还是直接看图比较直观: 设置同一行文本的不同颜色 /** * 设置文本信息的颜色 * @param textView * @param color * ...

高仿微信开源项目总结

本文为个人原创,欢迎转载,但请务必在明显位置注明出处! GitHub地址:https://github.com/motianhuo/wechat 这段时间我致力于github的开源贡献,开源了...

高仿微信界面

  • 2017年11月23日 15:51
  • 1.03MB
  • 下载

Android之高仿微信聊天的界面

微信的聊天界面是挺漂亮的,每条消息都带一个气泡,给人一种很清新的感觉,其实实现起来也不是那么的难,下面我们就来实现一下。       老规矩,先贴上源代码:http://download.csdn....

微信小程序(仿星巴克中国)Demo

  • 2017年12月09日 21:52
  • 101KB
  • 下载

微信小程序-仿QQ

  • 2017年11月21日 15:51
  • 405KB
  • 下载

Android 高仿微信发朋友圈浏览图片效果

最近一直在高仿微信、高仿微信,今天小编再给大家分享一个仿微信发朋友圈浏览图片的效果.... 好了,先看一下效果吧: 下面就来说一下具体怎么实现的:实现思路1.首先我们要获取数据源,数据源就是我们...
  • lyhhj
  • lyhhj
  • 2015年11月23日 22:18
  • 22707

仿微信评论弹框

  • 2017年12月02日 23:20
  • 105KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:仿的微信总结
举报原因:
原因补充:

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