ViewPager实现微信界面

效果图:

 

一.实现三个布局:

  1.top.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:background="#464646"    android:gravity="center"    android:layout_height="55dp">

<TextView        android:gravity="center"        android:text="微信"        android:textSize="20sp"        android:textColor="#ffffff"        android:layout_width="match_parent"        android:layout_height="match_parent" />

</LinearLayout>

  2.bottom.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:orientation="horizontal" //横向布局
android:background="#ffffff"
android:layout_height="65dp">

<LinearLayout
android:id="@+id/tab_weixin"
android:layout_width="0dp"//对宽度方向平分最好宽度设置为0
android:orientation="vertical"

android:layout_weight="1"  

(这里设置weight=1即对于总布局宽度方向剩余部分对后面的布局分享)

android:gravity="center"
android:layout_height="match_parent">

<ImageButton
android:clickable="false"
android:id="@+id/tab_weixin_img"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/weixin_anse"
android:background="#0000" <!--设置为透明-->
/>

<TextView
android:text="微信"
android:textColor="#000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

<LinearLayout
android:id="@+id/tab_friend"
android:layout_width="0dp"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center"
android:layout_height="match_parent">

<!--当点击图片按钮没有作用时可设置: android:clickable="false" 图片不可点击即让LinearLayout 去实现点击事件-->
<ImageButton
android:clickable="false"
android:id="@+id/tab_friend_img"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/friend_anse"
android:background="#00000000"
/>
<!--android:background="#00000000" 设置为透明 和四个0效果一样-->

<TextView
android:text="朋友"
android:textColor="#000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

<LinearLayout>

<ImageButton ..../>

<textView ..../>

</LinearLayout>

......

</LinearLayout>

  3.MainActivity.xml  (LinearLayout布局)

<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:orientation="vertical">

<include layout="@layout/top"/>

<android.support.v4.view.ViewPager    android:id="@+id/view_pager"    android:layout_weight="1"    android:layout_width="match_parent"    android:layout_height="0dp">

</android.support.v4.view.ViewPager>

</LinearLayout>

二.代码实现

private ViewPager mViewPager;private PagerAdapter mAdapter;

private List<View> mViews=new ArrayList<View>();

//获取四个布局:

private LinearLayout mtabweixin;private LinearLayout mtabaddress;private LinearLayout mtabfriend;

private LinearLayout mtabsetting;

//获取四个InageButton

private ImageButton mWeixinimg;private ImageButton mFriendimg;

private ImageButton mAddressimg;

private ImageButton msettingimg;

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);    requestWindowFeature(Window.FEATURE_NO_TITLE);//无android默认标题栏    //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  WindowManager.LayoutParams.FLAG_FULLSCREEN);    //设置界面无系统标题栏即全屏显示但是android自带标题栏还在 需要在setContentView之前    setContentView(R.layout.activity_main);

initView();  //初始化用的函数    initEvents();  //}
private void initView() {

mViewPager= (ViewPager) findViewById(R.id.view_pager);

mtabfriend= (LinearLayout) findViewById(R.id.tab_friend);    mtabaddress= (LinearLayout) findViewById(R.id.tab_address);    mtabsetting= (LinearLayout) findViewById(R.id.tab_setting);    mtabweixin= (LinearLayout) findViewById(R.id.tab_weixin);

mWeixinimg= (ImageButton) findViewById(R.id.tab_weixin_img);

msettingimg= (ImageButton) findViewById(R.id.tab_setting_img);

mAddressimg= (ImageButton) findViewById(R.id.tab_address_img);

mFriendimg= (ImageButton) findViewById(R.id.tab_friend_img);

LayoutInflater mInflater=LayoutInflater.from(this);//获得tab界面
View tab01=mInflater.inflate(R.layout.tab01,null);
View tab02=mInflater.inflate(R.layout.tab02,null);
View tab03=mInflater.inflate(R.layout.tab03,null);
View tab04=mInflater.inflate(R.layout.tab04,null);

mViews.add(tab01); //tab01.xml是需事先准备好对于四个界面的显示界面布局

mViews.add(tab02); //效果图中的这四个布局都只实现了<TextView>

mViews.add(tab03);

mViews.add(tab04); //装tab到List<View>中

// mViewPager.setAdapter(mAdapter);

mAdapter=new PagerAdapter() { //初始化mAdapter
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(mViews.get(position));//摧毁
}

@Override
public Object instantiateItem(ViewGroup container, int position) { //初始化Item
View view=mViews.get(position);//获得View
container.addView(view);
return view;
}

@Override
public int getCount() {
return mViews.size();//View包含的个数
}

@Override
public boolean isViewFromObject(View view, Object object) {
return view==object; //检查是否来自同一个对象
}
};

mViewPager.setAdapter(mAdapter); //设置ViewPager

} //initView()结束

//imageButton的点击事件    @Override    public void onClick(View view) {
resetImg();        switch (view.getId()){case R.id.tab_weixin_img:
{mViewPager.setCurrentItem(0);                mWeixinimg.setImageResource(R.drawable.weixin_lang); //设置回亮色                break;            }case R.id.tab_friend_img:
{mViewPager.setCurrentItem(1);                mFriendimg.setImageResource(R.drawable.friend_liang);                break;            }case R.id.tab_address_img:
{mViewPager.setCurrentItem(2);                mAddressimg.setImageResource(R.drawable.zhibo_liang);                break;            }case R.id.tab_setting_img:
{mViewPager.setCurrentItem(3);                msettingimg.setImageResource(R.drawable.shezhi_liang);                break;            }
}

}
//将所有图片切换为暗色private void resetImg() {mWeixinimg.setImageResource(R.drawable.weixin_anse);//这里是切换成别的暗色图片,    mFriendimg.setImageResource(R.drawable.friend_anse);    mAddressimg.setImageResource(R.drawable.zhibo_anse);    msettingimg.setImageResource(R.drawable.shezhi_anse);}

三.只需要将代码中需要的六张图片放入drawable中就行

时间: 2024-11-02 02:33:44

ViewPager实现微信界面的相关文章

ViewPager 与 Fragment相结合实现微信界面实例代码_Android

在如今的互联网时代,微信已是一个超级App.这篇通过ViewPager + Fragment实现一个类似于微信的界面,之前有用FragmentTabHost实现过类似界面,ViewPager的实现方式相对于FragmentTabHost的方式更简单明了. ViewPager: ViewPager继承自ViewGroup,是一个容器类,可以往里添加View. ViewPager的使用很简单,通过setAdapter()方法设置一个PagerAdapter即可,这个PagerAdapter需要自己写

ViewPager 与 Fragment相结合实现微信界面实例代码

在如今的互联网时代,微信已是一个超级App.这篇通过ViewPager + Fragment实现一个类似于微信的界面,之前有用FragmentTabHost实现过类似界面,ViewPager的实现方式相对于FragmentTabHost的方式更简单明了. ViewPager: ViewPager继承自ViewGroup,是一个容器类,可以往里添加View. ViewPager的使用很简单,通过setAdapter()方法设置一个PagerAdapter即可,这个PagerAdapter需要自己写

Android开发之高仿微信界面(1)

转载自:http://blog.csdn.net/dawanganban/article/details/19925449   是男人就下100层[第一层]--高仿微信界面(1) 分类: Android高仿系列2014-02-25 23:07 4118人阅读 评论(14) 收藏 举报 微信界面高仿闪屏主题 从今天开始将进行一个特别有趣且有意义的专栏<是男人就下100层>,计划对市面上比较火的应用进行高度仿照,并将开发过程贴出来,和大家交流和分享.由于时间关系可能进度会比较缓慢,但是任何事情如果

源代码-微信界面是怎么用代码实现的

问题描述 微信界面是怎么用代码实现的 花了一段时间大概弄清楚android开发的基础知识,可发现自己连经常使用的微信界面都不知道是怎么做出来的,求解释,如果有类似微信的界面代码可以给我就更好了(有点奢求了). 解决方案 activity + fragment 解决方案二: 如果想要做出类似效果,是不是需要用到ui设计器(从来没用过,求指教) 解决方案三: 学了一段时间编程基础知识,可是发现连最常用的操作系统我都开发不出来--常用不等于就简单. 参考:http://blog.csdn.net/ea

Android 高仿微信界面

http://blog.csdn.net/dawanganban/article/details/20408505 上一篇<是男人就下100层[第一层]--高仿微信界面(7)>中我们实现了下弹式菜单,这一篇我们来看看如何实现微信中的摇一摇功能. 首先我们来布局我们的摇一摇界面 布局文件如下: <?xml version="1.0" encoding="utf-8"?>   <RelativeLayout xmlns:android=&q

Android 使用Fragment模仿微信界面的实例代码

什么是Fragment 自从Android 3.0中引入fragments 的概念,根据词海的翻译可以译为:碎片.片段.其目的是为了解决不同屏幕分辩率的动态和灵活UI设计.大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments . fragments 的设计不需要你来亲自管理view hierarchy 的复杂变化,通过将Activity 的布局分散到frament 中,可以在运行时修改activit

Android UI设计与开发之ViewPager仿微信引导界面以及动画效果

基于前两篇比较简单的实例做铺垫之后,这一篇我们来实现一个稍微复杂一点的引导界面的效果,当然也只是稍微复杂了一点,对于会的人来说当然还是so easy!正所谓会者不难,难者不会,大概说的就是这个意思了吧.好的,话不多说,回归正题. 这篇要实现的是一个仿微信的动画效果,虽然这种效果的实现在网上到处都有,但是我还是想站在中低端开发者的角度去告诉大家是如何实现的,当然实现的方式有很多,我也只是列出了我认为实现起来比较方便的一种方法,希望大家能够受用. 一.实现的效果图 有图才有真相,上图先: 点击按钮后

Android App仿微信界面切换时Tab图标变色效果的制作方法_C 语言

概述 1.概述学习Android少不了模仿各种app的界面,自从微信6.0问世以后,就觉得微信切换时那个变色的Tab图标屌屌的,今天我就带大家自定义控件,带你变色变得飞起~~ 好了,下面先看下效果图: 清晰度不太好,大家凑合看~~有木有觉得这个颜色弱爆了了的,,,下面我动动手指给你换个颜色: 有没有这个颜色比较妖一点~~~好了~下面开始介绍原理.2.原理介绍通过上面的效果图,大家可能也猜到了,我们的图标并非是两张图片,而是一张图,并且目标颜色是可定制的,谁让现在动不动就谈个性化呢. 那么我们如何

Android仿微信主界面设计_Android

先来一张效果图 一.ActionBar的设计 首先是main.xml,先定义这些菜单,界面稍后在调整 <menu xmlns:android="http://schemas.android.com/apk/res/android" tools:context=".MainActivity"> <item android:id="@+id/action_search" android:actionViewClass="a