简单实现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. makefile之patsubst函数

    格式:$(patsubst pattern,replacement,text) 名称:模式字符串替换函数--patsubst. 功能:查找text中的单词(单词以"空格".&quo ...

  2. 截图工具gsnap

    嵌入式linux截图工具的基本原理就是通过读取Framebuffer,把LCD上显示的内容转换成图片格式文件(jpeg.bmp.png). gsnap.bin 1.jpg  /dev/fb0 gsna ...

  3. 爬虫 (3)- lxml库和贴吧图片下载案例

    lxml库 lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据. lxml和正则一样,也是用 C 实现的,是一款高性能的 Python HTML/XML 解 ...

  4. SVN 提交出错:Attempted to lock an already-locked dir

    http://www.2cto.com/kf/201306/221414.html —————————————————————————————————————————————————————— 在ec ...

  5. pl/sql 实例精解 06

    1. 简单循环 1: LOOP 2: statement1; 3: statement2; 4: EXIT WHEN condition; 5: END LOOP; 6: statement3; 也可 ...

  6. 在线生成条形码的解决方案(39码、EAN-13)

    感谢博主:转自:http://xoyozo.eyuyao.com/blog/barcode.html public partial class ReceivablesFormView : System ...

  7. ICO图标的制作与应用

    制作参看:http://www.shouce.ren/tool/ico?action=make 示例: <link href="./js/favicon.ico" rel=& ...

  8. Linux系统优化之网络IO调优

    修改 vi /etc/sysctl.conf后执行命令 sysctl -p立即生效 首先,系统的不同也会导致 /etc/下的 文件的不同,原本powerpc 环境下 在 /etc/init.d/下有个 ...

  9. 深入理解 Java 垃圾回收机制(转)

    一.垃圾回收机制的意义 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理.由于有个垃圾回收机制 ...

  10. AndroidManifest.xml文件详解(activity)(五)

    android:taskAffinity 这个属性用于跟Activity有亲缘关系的任务.带有相同亲缘关系的Activity,在概念上是属于相同任务的(从用户的角度看,它们是属于同一应用程序的).任务 ...