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 ...
随机推荐
- php 36进制与10进制转换
php 36进制与10进制转换 /** * @desc im:十进制数转换成三十六机制数 * @param (int)$num 十进制数 * return 返回:三十六进制数 */ function ...
- 李洪强和你一起学习前端之(8)CSS复习
今天是2017年3月24日周五 每一天都是余生当中最好的一天,珍惜当下. CSS基础复习 1 复习 1.1Css第一天 css层叠样式表 基础选择器 标签选择器 p{属性: 值;} 类选择器 .自定义 ...
- bootstrap 的使用
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Java - web.xml文件中可以配置哪些内容?
web.xml用于配置Web应用的相关信息,如:监听器(listener).过滤器(filter).Servlet.相关参数.会话超时时间.安全验证方式.错误页面等,下面是一些开发中常见的配置: ①配 ...
- CCNA2.0笔记_NAT
NAT:园区网内的PC是私有地址,整个园区网共享一个公有IP,如果园区网内的PC不做NAT,那么在发数据包给外网的时候会出现传输问题 NAT的原理:改变IP包头,使目的地址.源地址或两个地址在包头中被 ...
- Linux制作wifi热点/无线路由
参考: http://blog.csdn.net/u011641885/article/details/495121991.工具/原料 有无线网卡(usb接口的RT3070无线网卡).有线网卡的 ...
- php调用C代码的实现方法
在php程序中需要用到C代码,应该是下面两种情况: 1 已有C代码,在php程序中想直接用2 由于php的性能问题,需要用C来实现部分功能 针对第一种情况,最合适的方法是用system调用,把现有C代 ...
- js控制button
按钮变灰不可用方法:document.getElementById("crop").setAttribute("disabled", true); 按钮可用方法 ...
- 【PM面试题】如果让你创业,你会选择什么?
答案及理由 我会选择可穿戴设备 ,理由有三: 互联网与硬件的结合是未来的大势所趋,通过硬件来采集数据,而通过互联网或者移动互联网将这些设备连接起来,交换数据,让其形成流动的信息. 未来会从卖产品的阶段 ...
- 第一百六十节,封装库--JavaScript,ajax注册表单到数据库
封装库--JavaScript,ajax注册表单到数据库 效果图 前台js var biaodan = $().xu_lie_biao_dan($('form').sh_jd()); //序列化获取表 ...