ViewPager学习之仿微信主界面

因为素材的原因,这里都是从网上找的图片,所以所谓的仿微信实际上最后成了下图这货。。。,点击变色也是自己用的windows自带画图的颜料桶填充的空白。。。

直接上主代码:

package com.example.tabandviewpage ;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.ImageButton;
import android.widget.LinearLayout;

public class Main extends Activity implements OnClickListener{
	private ViewPager viewpager ;
	private ImageButton chat_list ,contacts ,friends,aboutme ;
	private List<View> list ;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE) ;
        setContentView(R.layout.main);
		list = new ArrayList<View>() ;
		this.viewpager = (ViewPager) findViewById(R.id.viewpager) ;
		initView() ;
		this.chat_list.setOnClickListener(this);
		this.contacts.setOnClickListener(this);
		this.friends.setOnClickListener(this);
		this.aboutme.setOnClickListener(this);
		this.viewpager.setOnPageChangeListener(new OnPageChangeListener() {

			@Override
			public void onPageSelected(int arg0) {
				// TODO Auto-generated method stub
				int position = viewpager.getCurrentItem() ;
				resetImg();
				if(position ==0)
				{
					chat_list.setImageResource(R.drawable.btn_chat_anxia);
				} else if(position == 1) {
					contacts.setImageResource(R.drawable.btn_contacts_anxia);
				} else if(position == 2) {
					friends.setImageResource(R.drawable.btn_rest_anxia);
				} else if(position == 3) {
					aboutme.setImageResource(R.drawable.btn_aboutme_anxia);
				}

			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				// TODO Auto-generated method stub

			}

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

			}
		});

	}
	void initView() {
		// TODO Auto-generated method stub
		this.chat_list = (ImageButton) findViewById(R.id.chat_list) ;
		this.contacts = (ImageButton) findViewById(R.id.contacts) ;
		this.friends = (ImageButton) findViewById(R.id.friends) ;
		this.aboutme = (ImageButton) findViewById(R.id.aboutme) ;

		//LinearLayout tab_chat_list = (LinearLayout)findViewById(R.id.chat_list) ;
		//LinearLayout tab_contacts = (LinearLayout)findViewById(R.id.tab_contacts) ;
		//LinearLayout tab_friends = (LinearLayout) findViewById(R.id.tab_friends) ;
		//LinearLayout tab_aboutme  = (LinearLayout)findViewById(R.id.tab_aboutme) ;

		LayoutInflater mf = getLayoutInflater().from(this) ;
		View tab_01 = mf.inflate(R.layout.tab_chat_list, null) ;
		View tab_02 =mf.inflate(R.layout.tab_contacts, null) ;
		View tab_03 = mf.inflate(R.layout.tab_friends, null) ;
		View tab_04 = mf.inflate(R.layout.tab_aboutme, null) ;

		this.list.add(tab_01) ;
		this.list.add(tab_02) ;
		this.list.add(tab_03) ;
		this.list.add(tab_04) ;

		PagerAdapter adapter = new PagerAdapter() {

			@Override
			public boolean isViewFromObject(View arg0, Object arg1) {
				// TODO Auto-generated method stub
				return arg0 == arg1 ;
			}

			@Override
			public int getCount() {
				// TODO Auto-generated method stub
				return list.size() ;
			}
			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object) {
				// TODO Auto-generated method stub
				container.removeView(list.get(position));
			}

			@Override
			public Object instantiateItem(ViewGroup container, int position) {
				// TODO Auto-generated method stub
				View view = list.get(position) ;
				container.addView(view) ;
				return view;
			}
		};

		viewpager.setAdapter(adapter);
	}
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		resetImg() ;
		switch(v.getId())
		{
		case R.id.chat_list:
			this.chat_list.setImageResource(R.drawable.btn_chat_anxia);
			viewpager.setCurrentItem(0);
		break ;

		case R.id.contacts:
			this.contacts.setImageResource(R.drawable.btn_contacts_anxia);
			viewpager.setCurrentItem(1);
			break ;

		case R.id.friends :
			this.friends.setImageResource(R.drawable.btn_rest_anxia) ;
			viewpager.setCurrentItem(2);
			break ;
		case R.id.aboutme :
			this.aboutme.setImageResource(R.drawable.btn_aboutme_anxia);
			viewpager.setCurrentItem(3);
			break ;

		}

	}
	private void resetImg() {
		// TODO Auto-generated method stub
		this.chat_list.setImageResource(R.drawable.btn_chat);
		this.contacts.setImageResource(R.drawable.btn_contacts);
		this.friends.setImageResource(R.drawable.btn_rest);
		this.aboutme.setImageResource(R.drawable.btn_aboutme);
	}

}

主activity布局:

<?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/top"/>

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

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

</LinearLayout>

顶部布局

<?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="45dp"
    android:background="#303030"
    android:orientation="vertical" >

    <TextView
        android:text="微信"
        android:textColor="#FFFFFF"
        android:layout_gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>

</LinearLayout>

底部布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:baselineAligned="false"
    android:background="#FFFFFF"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">
        <ImageButton
            android:id="@+id/chat_list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/selector"
            android:src="@drawable/btn_chat"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="聊天"
            android:textSize="20sp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">
        <ImageButton
            android:id="@+id/contacts"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/selector"
            android:src="@drawable/btn_contacts"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="联系人"
            android:textSize="20sp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">
        <ImageButton
            android:id="@+id/friends"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/selector"
            android:src="@drawable/btn_rest"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="朋友圈"
            android:textSize="15sp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">
        <ImageButton
            android:id="@+id/aboutme"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/selector"
            android:src="@drawable/btn_aboutme"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="个人中心"
            android:textSize="20sp"/>
    </LinearLayout>

</LinearLayout>
时间: 2024-07-29 10:38:28

ViewPager学习之仿微信主界面的相关文章

Android ActionBar应用实战,高仿微信主界面的设计

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对较为深刻的理解了.唯一欠缺的是,前面我们都只是学习了理论知识而已,虽然知识点已经掌握了,但是真正投入到项目实战当中时会不会掉链子还很难说.那么不用担心,本篇文章我就将带领大家一起进入ActionBar的应用实战,将理论和实践完美结合到一起. 如果你还没有看过我的前两篇文章,建议先去阅读一下 Andr

Android利用ViewPager仿微信主界面-android学习之旅(78)

首先是介绍ViewPager这个控件 ,这个控件需要pagerAdapter作为容器来提供数据,同时pagerAdapter的数据源是View数组 效果图如下 部分代码如下,实现如下的方法 mPagerAdapter = new PagerAdapter(){ @Override public int getCount() { return mViews.size(); } @Override public boolean isViewFromObject(View view, Object o

仿微信主界面导航栏图标字体颜色的变化

在所有的移动产品中,微信的界面做的很简洁,简单,我对微信主界面影响最深的就是微信底部导航栏的图标,以及字体颜色的变化,一直都想实现以下,今天有空,就大体的模仿者做了一遍. 效果图如下: 分析: 底部主要分为图标的渐变,字体颜色的渐变. 图标的颜色的渐变:主要是通过canvas绘制两个不同的图片,控制其图片的alpha透明度,来达到图标的渐变. 字体颜色:字体颜色就很好说了,Animator动画框架应该很熟悉了,在Animator框架中,有一个TypeEven是来计算十六进制色值的,我们可以通过A

使用FragmentTabHost和ViewPager实现仿微信主界面策划

最近看到很多界面主页都差不多,决定研究研究写出来,以后直接拿来用,不做代码的轮子,多总结,多学习 还是废话少说,先上图 介绍一下我的代码: 首先是布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width=&quo

仿微信主界面

跟着慕课网的教学视频学习了如何制作微信的主界面,因为还有一些地方并没有完全搞懂,所以这里主要是记录下整个制作的过程,方便以后的学习! 效果图如图所示: 实现了点击下面tab切换fragment以及滑动切换tab的功能,同时滑动时,下面tab的icon会实现颜色渐变的效果. 首先是主界面的布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:bunschen="

安卓开发复习笔记——ViewPager组件(仿微信引导界面&gt;)

这2天事情比较多,都没时间更新博客,趁周末,继续继续~ 今天来讲个比较新潮的组件——ViewPager 什么是ViewPager? ViewPager是安卓3.0之后提供的新特性,继承自ViewGroup,专门用以实现左右滑动切换View的效果. 如果想向下兼容就必须要android-support-v4.jar这个包的支持,这是一个来自google提供的一个附加包. 通俗点来讲,就是现在市面上大多数app,安装完第一次打开软件会出现的一个左右滑动的引导界面. 先来看下效果图:     这是一个

Android 之高仿微信主界面

源码下载:  http://files.cnblogs.com/aibuli/WeChatSample.zip 主界面主要使用ActionBar来完成.  要实现这个效果,第一步当然是编辑menu目录下的main.xml文件. <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:

高仿微信主界面:ViewPage+Fragment 不预加载Fragment 也不会销毁Fragment

微信支持下面四个Tab滑动,之前做的demo,遇到两个问题,1:Fragment会预加载,2:创建过的Fragment,来回滑动,会销毁重新创建.今天我这个demo,就要解决这两个问题.第一个问题需要导入一个新的V4包,最后我会提供,ViewPage要设置 mViewPager .setOffscreenPageLimit(0);这样的就能解决预加载的问题.第二个问题:我贴上代码: package com.example.fragmentviewpage; import java.util.Ar

安卓开发复习笔记——Fragment+ViewPager组件(高仿微信界面)

什么是ViewPager? 关于ViewPager的介绍和使用,在之前我写过一篇相关的文章<安卓开发复习笔记——ViewPager组件(仿微信引导界面)>,不清楚的朋友可以看看,这里就不再重复. 什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个Activity中,我们可以合并多个Fragment在一个单独的activity中建立多个UI面板,或