Android主页导航:fragment+viewpager
简单实现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的更多相关文章
- Android控件-Fragment+ViewPager(高仿微信界面)
什么是Fragment? Fragment是Android3.0后新增的概念,Fragment名为碎片,不过却和Activity十分相似,具有自己的生命周期,它是用来描述一些行为或一部分用户界面在一个 ...
- Android tab导航的几种方法:ActionBar tab +fragment,Viewpager+pagerTitleStrip,开源框架ViewPageIndicator 和 ViewPager
action来实现tab标签 并跟fragment结合 因为要写新闻客户端这个tab导航是必须的 这里我写几个小练习,希望大家融会贯通. 1actionbar设置tab +fragment 布局是个l ...
- Android 底部按钮BottomNavigationView + Fragment + viewPager 的使用(一)
实现的效果,左右滑动,底部栏跟着滑动,中间加的是分帧的页面 上代码:主页面activity_main.xml <?xml version="1.0" encod ...
- Android底部导航栏创建——ViewPager + RadioGroup
原创文章,引用请注明出处:http://www.cnblogs.com/baipengzhan/p/6270201.html Android底部导航栏有多种实现方式,本文详解其中的ViewPager ...
- Android开发之利用ViewPager实现在Activity或Fragment中引入别的布局文件实现滑动并进行页面跳转
有些时候经常可以看到其他APP中有一排的图标,可以在一个界面中滑来滑去,并且图标可以进行点击事件进行页面的跳转.这里对这种方法的实现做出总结. 首先看一下图片: 下面这两种图片是在一个Fragment ...
- 低版本系统兼容的ActionBar(六)用Fragment+ViewPager+Tab实现快速导航
Tab经常和Fragment结合使用,这一讲我们用3种方式来实现这种快捷导航. 0.重要的两个监听器 MyTabListener,这个我们之前已经接触过了 package com.kale.actio ...
- Android编程心得-使用ActionBar+Fragment+ViewPager实现动态切换Menu效果
1.首先上效果图 2.本例实现的效果主要适用于当前页面有多个页签时.进行Fragment切换时,能够利用不同的Menu样式与当前Fragment中的内容进行配合,能够大大添加复用性,看到效果图后,以下 ...
- Android应用经典主界面框架之二:仿网易新闻client、CSDN client (Fragment ViewPager)
另外一种主界面风格则是以网易新闻.凤凰新闻以及新推出的新浪博客(阅读版)为代表.使用ViewPager+Fragment,即ViewPager里适配器里放的不是一般的View.而是Fragment.所 ...
- Android中Fragment+ViewPager的配合使用
官方推荐 ViewPager与Fragment一起使用,可以更加方便的管理每个Page的生命周期,这里有标准的适配器实现用于ViewPager和Fragment,涵盖最常见的用例.FragmentPa ...
随机推荐
- 从Python的角度来看编码与解码
导语: Python2和Python3中,因为默认字符集的不同而造成的麻烦,简直是程序员的梦魇!要彻底告别这个麻烦,就需要从本质上来理解编码和解码. 为什么要有编码? 对于不会英文的中国人来说,将英文 ...
- 解决国内gem不能用的问题
转自:http://www.haorooms.com/post/gem_not_use 最近在安装SASS的时候,用到gem命令,但是运行出行如下错误! C:\Users\len>gem ins ...
- 李洪强和你一起学习前端之(7)定位盒子 css可见性 滑动门案例
今天是2017年3月23日 1 复习昨天知识 1.1浮动 Float:left | right 特点: ->浮动的元素不占位置(脱标) ->可以将行内元素转化为行内块元素 ->块级元 ...
- Android App常规测试内容
转自:https://mp.weixin.qq.com/s?__biz=MzU0NjcyNDg3Mw==&mid=2247484053&idx=1&sn=116fe8c7eed ...
- 1.3 Services - 服务
服务是一种应用组件,它可以在后台执行耗时的操作,它是没有用户界面的.其它的应用组件都可以开启一个服务,服务开启后,即使用户离开了应用,服务仍然可以在后台运行.此外,绑定到服务的组件可以与服务进行交互, ...
- 排查PHP-FPM占用CPU过高
发现 如何发现的呢?当然是使用top命令,发现系统的load average>3,这说明系统已经处于比较高的负载中. 尝试解决 当我把php-fpm重启后,没过一会儿又开始cpu狂飙!这是什么鬼 ...
- codeforces 825F F. String Compression dp+kmp找字符串的最小循环节
/** 题目:F. String Compression 链接:http://codeforces.com/problemset/problem/825/F 题意:压缩字符串后求最小长度. 思路: d ...
- HDFS的HA机制
传统的HDFS机制如下图所示: 也就是存在一个NameNode,一个SecondaryNameNode,然后若干个DataNode.这样的机制虽然元数据的可靠性得到了保证(靠edits,fsimage ...
- 请写出5种常见到的runtime exception。
请写出5种常见到的runtime exception. 解答: NullPointerException:当操作一个空引用时会出现此错误. NumberFormatException:数据格式转换出现 ...
- 补图BFS(hdu 5876)
题目大意: 给出一个图和起点S,求补图中S到其他点的最短距离. http://acm.hdu.edu.cn/showproblem.php?pid=5876 我自己的垃圾做法: 用线段树来维护dijk ...