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 ...
随机推荐
- 544. Top k Largest Numbers【medium】
Given an integer array, find the top k largest numbers in it. Example Given [3,10,1000,-99,4,100] ...
- redis命令_SETNX
SETNX key value 将 key 的值设为 value ,当且仅当 key 不存在. 若给定的 key 已经存在,则 SETNX 不做任何动作. SETNX 是『SET if Not eXi ...
- JS高程3:事件
事件是JS和HTML交互的方式. 事件流 事件流是HTML文档接收事件的顺序.分为2个流派:事件冒泡流和事件捕捉流. 事件冒泡流 由内到外 事件捕捉流 由外到内 DOM事件流 事件处理程序 跨浏览器时 ...
- (转)Python开发规范
转自:https://www.jianshu.com/p/d414e90dc953 Python风格规范 本项目包含了部分Google风格规范和PEP8规范,仅用作内部培训学习 Python风格规范 ...
- iOS swift String 换行显示
在oc中换行的方式 NSString *str = @" aaaaa \ bbbbb \ cccc \ "; swift中这种方式不可用 ,swift中换行采用新的方双三引号 &q ...
- ORA-01036: 非法的变量名/编号
今天写程序时,往Oracle中插入二进制数据,出现错误ORA-01036:非法的变量名/编号,代码如下: strSql = "INSERT INTO KA99 (KA991,KA992,KA ...
- 【Python】分享使用的插件文件链接(实时更新)
链接:https://pan.baidu.com/s/1o7AgHtw Python工具实时更新.
- python from import 自定义模块
from douban250.items import Douban250Item python import 自定义模块 (1)主程序与模块程序在同一目录下: 如下面程序结构: `-- src ...
- Linux利器:WinSCP,Putty,pscp和psftp
# Summary PuTTY (Telnet 和 SSH 客户端) PSCP (SCP 客户端, 命令行下通过 SSH 拷贝文件,类似于 Unix/Linux 下的 scp 命令) PSFTP (S ...
- 列出自己常用的jdk中的数据结构
列出自己常用的jdk中的数据结构 解答:线性表,链表,哈希表是常用的数据结构.