简单实现Fragment+ViewPager实现主页导航控制,效果如下:

一、activity_main.xml布局文件:

 <?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" > <android.support.v4.view.ViewPager
android:id="@+id/viewpager_main"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="7" /> <LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal" > <RelativeLayout
android:id="@+id/rel_signin"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@color/tab_select_bg"
android:layout_weight="1" > <Button
style="@style/tab_style"
android:id="@+id/tab_signin"
android:drawableTop="@drawable/my"
android:text="@string/signin"/>
</RelativeLayout> <RelativeLayout
android:id="@+id/rel_contact"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" > <Button
android:id="@+id/tab_contact"
style="@style/tab_style"
android:drawableTop="@drawable/my"
android:text="@string/contact"></Button>
</RelativeLayout> <RelativeLayout
android:id="@+id/rel_search"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" > <Button
android:id="@+id/tab_search"
style="@style/tab_style"
android:drawableTop="@drawable/my"
android:text="@string/searrch"></Button>
</RelativeLayout> <RelativeLayout
android:id="@+id/rel_earning"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" > <Button
android:id="@+id/tab_earning"
style="@style/tab_style"
android:drawableTop="@drawable/my"
android:text="@string/earning"
/>
</RelativeLayout> <RelativeLayout
android:id="@+id/rel_my"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" > <Button
android:id="@+id/tab_my"
style="@style/tab_style"
android:drawableTop="@drawable/my"
android:text="@string/my"
/>
</RelativeLayout>
</LinearLayout> </LinearLayout>

二、MainActivity主文件:

 package com.fragmentviewpagerdemo;

 import java.util.ArrayList;
import java.util.List; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout; import com.fragmentviewpagerdemo.fragment.MyFragment; public class MainActivity extends FragmentActivity {
ViewPager viewpager_main;
RelativeLayout rel_signin;
RelativeLayout rel_contact;
RelativeLayout rel_search;
RelativeLayout rel_earning;
RelativeLayout rel_my;
Button tab_signin;
Button tab_contact;
Button tab_search;
Button tab_earning;
Button tab_my; private int currentPage = 0;
private MyFragment signInFragment;
private MyFragment searchFragment;
private MyFragment contactFragment;
private MyFragment earningFragment;
private MyFragment myFragment; private List<RelativeLayout> mRelTabs;
private List<Fragment> fragments;
private List<Button> mTabs;// 按钮 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
controlViewPager();
} // 控制viewpager
private void controlViewPager() {
FragmentManager fm = getSupportFragmentManager();
viewpager_main.setAdapter(new ViewPagerAdapter(fm));
viewpager_main.setOnPageChangeListener(new pageChangeListener());
for (int i = 0; i < mTabs.size(); i++) {
final int index = i;
mTabs.get(i).setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
setcurrent(index);
viewpager_main.setCurrentItem(index);
}
});
}
} private void init() {
viewpager_main = (ViewPager) findViewById(R.id.viewpager_main);
rel_signin = (RelativeLayout) findViewById(R.id.rel_signin);
rel_contact = (RelativeLayout) findViewById(R.id.rel_contact);
rel_search = (RelativeLayout) findViewById(R.id.rel_search);
rel_earning = (RelativeLayout) findViewById(R.id.rel_earning);
rel_my = (RelativeLayout) findViewById(R.id.rel_my);
tab_signin = (Button) findViewById(R.id.tab_signin);
tab_contact = (Button) findViewById(R.id.tab_contact);
tab_search = (Button) findViewById(R.id.tab_search);
tab_earning = (Button) findViewById(R.id.tab_earning);
tab_my = (Button) findViewById(R.id.tab_my); currentPage = 0;
mTabs = new ArrayList<Button>();
mTabs.add(tab_signin);
mTabs.add(tab_contact);
mTabs.add(tab_search);
mTabs.add(tab_earning);
mTabs.add(tab_my);
mRelTabs = new ArrayList<RelativeLayout>();
mRelTabs.add(rel_signin);
mRelTabs.add(rel_contact);
mRelTabs.add(rel_search);
mRelTabs.add(rel_earning);
mRelTabs.add(rel_my); signInFragment = new MyFragment("考勤", getResources().getColor(
R.color.fragment_1));
searchFragment = new MyFragment("通讯录", getResources().getColor(
R.color.fragment_2));
contactFragment = new MyFragment("查单", getResources().getColor(
R.color.fragment_3));
earningFragment = new MyFragment("收入", getResources().getColor(
R.color.fragment_4));
myFragment = new MyFragment("我的", getResources().getColor(
R.color.fragment_5));
fragments = new ArrayList<Fragment>();
fragments.add(signInFragment);
fragments.add(contactFragment);
fragments.add(searchFragment);
fragments.add(earningFragment);
fragments.add(myFragment); } /**
* 设置导航图标均为未选中
*/
private void setTabNotSelect() {
rel_signin.setBackgroundColor(getResources().getColor(R.color.white));
rel_contact.setBackgroundColor(getResources().getColor(R.color.white));
rel_search.setBackgroundColor(getResources().getColor(R.color.white));
rel_earning.setBackgroundColor(getResources().getColor(R.color.white));
rel_my.setBackgroundColor(getResources().getColor(R.color.white)); } // viewpager适配器
class ViewPagerAdapter extends FragmentPagerAdapter { public ViewPagerAdapter(FragmentManager fm) {
super(fm);
} @Override
public Fragment getItem(int arg0) {
return fragments.get(arg0);
} @Override
public int getCount() {
return fragments.size();
} } // viewpager监听器
class pageChangeListener implements ViewPager.OnPageChangeListener { @Override
public void onPageScrollStateChanged(int arg0) {
} @Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
} @Override
public void onPageSelected(int arg0) {
setcurrent(arg0); }
} // viewpager改变后更改其他控件
private void setcurrent(int position) {
currentPage = position;
setTabNotSelect();
mRelTabs.get(position).setBackgroundColor(
getResources().getColor(R.color.tab_select_bg));
}
}

三、百度云下载地址:http://pan.baidu.com/s/1gdyFGKb

Android主页导航:fragment+viewpager的更多相关文章

  1. Android控件-Fragment+ViewPager(高仿微信界面)

    什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个 ...

  2. Android tab导航的几种方法:ActionBar tab +fragment,Viewpager+pagerTitleStrip,开源框架ViewPageIndicator 和 ViewPager

    action来实现tab标签 并跟fragment结合 因为要写新闻客户端这个tab导航是必须的 这里我写几个小练习,希望大家融会贯通. 1actionbar设置tab +fragment 布局是个l ...

  3. Android 底部按钮BottomNavigationView + Fragment + viewPager 的使用(一)

    实现的效果,左右滑动,底部栏跟着滑动,中间加的是分帧的页面        上代码:主页面activity_main.xml <?xml version="1.0" encod ...

  4. Android底部导航栏创建——ViewPager + RadioGroup

    原创文章,引用请注明出处:http://www.cnblogs.com/baipengzhan/p/6270201.html Android底部导航栏有多种实现方式,本文详解其中的ViewPager ...

  5. Android开发之利用ViewPager实现在Activity或Fragment中引入别的布局文件实现滑动并进行页面跳转

    有些时候经常可以看到其他APP中有一排的图标,可以在一个界面中滑来滑去,并且图标可以进行点击事件进行页面的跳转.这里对这种方法的实现做出总结. 首先看一下图片: 下面这两种图片是在一个Fragment ...

  6. 低版本系统兼容的ActionBar(六)用Fragment+ViewPager+Tab实现快速导航

    Tab经常和Fragment结合使用,这一讲我们用3种方式来实现这种快捷导航. 0.重要的两个监听器 MyTabListener,这个我们之前已经接触过了 package com.kale.actio ...

  7. Android编程心得-使用ActionBar+Fragment+ViewPager实现动态切换Menu效果

    1.首先上效果图 2.本例实现的效果主要适用于当前页面有多个页签时.进行Fragment切换时,能够利用不同的Menu样式与当前Fragment中的内容进行配合,能够大大添加复用性,看到效果图后,以下 ...

  8. Android应用经典主界面框架之二:仿网易新闻client、CSDN client (Fragment ViewPager)

    另外一种主界面风格则是以网易新闻.凤凰新闻以及新推出的新浪博客(阅读版)为代表.使用ViewPager+Fragment,即ViewPager里适配器里放的不是一般的View.而是Fragment.所 ...

  9. Android中Fragment+ViewPager的配合使用

    官方推荐 ViewPager与Fragment一起使用,可以更加方便的管理每个Page的生命周期,这里有标准的适配器实现用于ViewPager和Fragment,涵盖最常见的用例.FragmentPa ...

随机推荐

  1. jdk8 Function

    例子 1: // 定义function Function<String, String> fun = parm -> { // 这里是定function中的逻辑 return Str ...

  2. HBase学习笔记——配置及Shell操作

    1.HBase的配置 还是以前配置的集群,见:http://www.cnblogs.com/DarrenChan/p/6493373.html 我们约定:weekend03和weekend04放HMa ...

  3. Papers of Word Embeddings

    首先解释一下什么叫做embedding.举个例子:地图就是对于现实地理的embedding,现实的地理地形的信息其实远远超过三维 但是地图通过颜色和等高线等来最大化表现现实的地理信息. embeddi ...

  4. ie tbody table 兼容方法

    IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 Js代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2 ...

  5. 国内Android源码下载

    因国内网络被墙的原因,按照Google提供下载Android源码的方式很难下载到,所以记录一下国内下载Android源码的步骤,主要利用的是清华大学的镜像下载. 说明: 下载环境:Ubuntu14.0 ...

  6. JS语法快速查询

    本文转载至 http://wenku.baidu.com/link?url=z4gND-0w-Cq7hkn2Vnnz0CAJJPwJ8jJrFY0jtnnACiaz4yMK49VAvfJ3BlTVcm ...

  7. JAVA大数(转)

    1.输入 首先要想输入需要先包括: import java.util.*; 我们需要其中的 Scanner类声明的对象来扫描控制台输入. 针对A+B来说: import java.util.*; pu ...

  8. zoj3497(经典矩阵乘法)

    原以为是用搜索做的题,想了好久都无法想到一个高效正确的解法. 后面发现竟然这就是矩阵的应用! 碉堡! 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值  ——选自ma ...

  9. 【BZOJ4660】Crazy Rabbit 结论+DP

    [BZOJ4660]Crazy Rabbit Description 兔子们决定在自己的城堡里安排一些士兵进行防守.给出 n 个点的坐标,和城堡里一个圆心在原点的圆形的障碍,兔子们希望从中选出 k 个 ...

  10. 170122、Netty 长连接服务

    推送服务 还记得一年半前,做的一个项目需要用到 Android 推送服务.和 iOS 不同,Android 生态中没有统一的推送服务.Google 虽然有 Google Cloud Messaging ...