思路:新建一个Activity,且这个Activity要继承FragementActivity,在Activity的布局文件中放入了一个viewPager,为了效果好看,还做了个导航,使得ViewPager和导航栏能够实现联动。代码里面有解释,我就不详细介绍了!!

在往ViewPager放Fragment的时候,用到的适配器应该是FragmentPagerAdapter

导航栏的制作我是用了一个ImageView+TextView,若这时使用Imageview(或TextView)实现点击事件的话,到你点击不到ImageView(或TextView)的话,不会产生联动效果,所以我用一个LinearLayout去把ImageView和TextView包含起来,并使用LinearLayout相应点击事件,并设置ImageView和TextView不能被点击.

MainActivity.java

package com.example.administrator.viewpagerfagmentdemo;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout; import java.util.ArrayList;
import java.util.List; public class MainActivity extends FragmentActivity implements View.OnClickListener { private ViewPager myViewPager; //声明ViewPager
private FragmentPagerAdapter myFragmentPagerAdapter; //Fragment适配器
private List<Fragment> myContionter; //存放的容器
// 声明一下四个Fragment
private FirstFragment myFirstFragment;
private SecondFragment mySecondtFragment;
private ThirdFragment myThirdFragment;
private FourFragment myFourFragment;
// 声明四个ImageView
private ImageView down_first_image;
private ImageView down_second_image;
private ImageView down_third_image;
private ImageView down_four_image; private LinearLayout first;
private LinearLayout second;
private LinearLayout third;
private LinearLayout four; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initView(); //初始化各种View initEvents(); //初始化监听事件 } //初始化我们需要用到的View
public void initView(){
myViewPager = (ViewPager) findViewById(R.id.viewPager); down_first_image = (ImageView) findViewById(R.id.down_music);
down_second_image = (ImageView) findViewById(R.id.down_icon);
down_third_image = (ImageView) findViewById(R.id.down_people);
down_four_image = (ImageView) findViewById(R.id.down_shoot); first = (LinearLayout) findViewById(R.id.first);
second = (LinearLayout) findViewById(R.id.second);
third = (LinearLayout) findViewById(R.id.third);
four = (LinearLayout) findViewById(R.id.four); //初始化Fragment
myFirstFragment = new FirstFragment();
mySecondtFragment = new SecondFragment();
myThirdFragment = new ThirdFragment();
myFourFragment = new FourFragment();
//初始化容器
myContionter = new ArrayList<>();
myContionter.add(myFirstFragment);
myContionter.add(mySecondtFragment);
myContionter.add(myThirdFragment);
myContionter.add(myFourFragment);
//初始化 适配器
myFragmentPagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override
public Fragment getItem(int i) {
return myContionter.get(i);
} @Override
public int getCount() {
return myContionter.size();
}
};
myViewPager.setAdapter(myFragmentPagerAdapter);
//设置监听器,没什么服用价值,就直接匿名内部类了
myViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i2) { }
//当 界面 切换 的时候
@Override
public void onPageSelected(int position) {
initImageViewBackGround(); //图片先置为暗色
switch (position){
case :
down_first_image.setBackgroundResource(R.drawable.shake_icon_music_pressed);
break;
case :
down_second_image.setBackgroundResource(R.drawable.notification_icon);
break;
case :
down_third_image.setBackgroundResource(R.drawable.shake_icon_people_pressed);
break;
case :
down_four_image.setBackgroundResource(R.drawable.sns_shoot_location_pressed);
break;
}
} @Override
public void onPageScrollStateChanged(int i) { }
}); //这俩 得对应起来
myViewPager.setCurrentItem();
down_first_image.setBackgroundResource(R.drawable.shake_icon_music_pressed);
}
//初始化 监听事件
private void initEvents() {
// down_first_image.setOnClickListener(this);
// down_second_image.setOnClickListener(this);
// down_third_image.setOnClickListener(this);
// down_four_image.setOnClickListener(this); first.setOnClickListener(this);
second.setOnClickListener(this);
third.setOnClickListener(this);
four.setOnClickListener(this);
} //监听事件的方法
@Override
public void onClick(View v) {
initImageViewBackGround(); //先设置图片为亮色
switch (v.getId()){
case R.id.first:
myViewPager.setCurrentItem();
down_first_image.setBackgroundResource(R.drawable.shake_icon_music_pressed);
break;
case R.id.second:
myViewPager.setCurrentItem();
down_second_image.setBackgroundResource(R.drawable.notification_icon);
break;
case R.id.third:
myViewPager.setCurrentItem();
down_third_image.setBackgroundResource(R.drawable.shake_icon_people_pressed);
break;
case R.id.four:
myViewPager.setCurrentItem();
down_four_image.setBackgroundResource(R.drawable.sns_shoot_location_pressed);
break; }
} //初始化图片都为暗色
private void initImageViewBackGround(){ down_first_image.setBackgroundResource(R.drawable.shake_icon_music_normal);
down_second_image.setBackgroundResource(R.drawable.notification_icon_gray);
down_third_image.setBackgroundResource(R.drawable.shake_icon_people_normal);
down_four_image.setBackgroundResource(R.drawable.sns_shoot_location_normal);
}
}

activity_main.xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center"
android:background="@color/title_background">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/title_text_color"
android:text="微信"/>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1">
</android.support.v4.view.ViewPager> <LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/abc_list_selector_disabled_holo_light"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/first"
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/down_music"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="2"
android:clickable="false"
android:background="@drawable/shake_icon_music_normal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:textColor="#000"
android:layout_weight="1"
android:clickable="false"
android:text="音乐"/>
</LinearLayout>
<LinearLayout
android:id="@+id/second"
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/down_icon"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="2"
android:clickable="false"
android:background="@drawable/notification_icon_gray"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:textColor="#000"
android:layout_weight="1"
android:clickable="false"
android:text="哈哈"/>
</LinearLayout>
<LinearLayout
android:id="@+id/third"
android:layout_width="0dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/down_people"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="2"
android:clickable="false"
android:background="@drawable/shake_icon_people_normal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:textColor="#000"
android:layout_weight="1"
android:clickable="false"
android:text="好友"/>
</LinearLayout>
<LinearLayout
android:id="@+id/four"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:id="@+id/down_shoot"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="2"
android:clickable="false"
android:background="@drawable/sns_shoot_location_normal"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="0dp"
android:textColor="#000"
android:layout_weight="1"
android:clickable="false"
android:text="啦啦"/>
</LinearLayout>
</LinearLayout> </LinearLayout>

建立四个Fragment,这四个Fragment都是一样,在这里我就贴出一个代码,并且我还在这个Frament中又放了ViewPager,在这个viewPager中我又放了Fragment,那么这是你在设置Fragment里面viewPager的适配器的时候,需要用到FragmentPagerAdapter,那么这里穿进去的参数应该是getChildFragmentManager(),否则会报错。

Fragment.java

package com.example.administrator.viewpagerfagmentdemo;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; import java.util.ArrayList;
import java.util.List; /**
* Created by Administrator on 2015/9/2.
*/
public class FirstFragment extends Fragment { private ViewPager myViewPager;
private List<View> myContiontar ; //viewPager的数据源
private PagerAdapter myPagerAdapter; //有了数据源,必然要有适配器
private FragmentPagerAdapter fragmentPagerAdapter;
private List<Fragment> list;
private View view; //Fragment的布局 private Lunboa lunboa;
private Lunbob lunbob;
private Lunboc lunboc;
private Lunbod lunbod; @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.first_fragment,null);
initViews(); //初始化各种View
return view;
} //初始化各种View
private void initViews(){
// 先将xml文件 换成 view
myViewPager = (ViewPager) view.findViewById(R.id.first_fragment_viewpager);
//建立五个view 去获得四个ImageView
View view1 = LayoutInflater.from(getActivity().getApplicationContext()).inflate(R.layout.lunbo_image1,null);
View view2 = LayoutInflater.from(getActivity().getApplicationContext()).inflate(R.layout.lunbo_image2,null);
View view3 = LayoutInflater.from(getActivity().getApplicationContext()).inflate(R.layout.lunbo_image3,null);
View view4 = LayoutInflater.from(getActivity().getApplicationContext()).inflate(R.layout.lunbo_image4,null);
View view5 = LayoutInflater.from(getActivity().getApplicationContext()).inflate(R.layout.lunbo_image5,null);
//加入到容器里面
myContiontar = new ArrayList<>();
myContiontar.add(view1);
myContiontar.add(view2);
myContiontar.add(view3);
myContiontar.add(view4);
myContiontar.add(view5); lunboa = new Lunboa();
lunbob = new Lunbob();
lunboc = new Lunboc();
lunbod = new Lunbod(); list = new ArrayList<>();
list.add(lunboa);
list.add(lunbob);
list.add(lunboc);
list.add(lunbod);
//fragmentPagerAdapter
fragmentPagerAdapter = new FragmentPagerAdapter(getFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
}; //初始化 适配器
myPagerAdapter = new PagerAdapter() {
//返回显示多少项
@Override
public int getCount() {
return myContiontar.size();
} @Override
public boolean isViewFromObject(View view, Object o) {
return view == o;
}
//滑动切换时,移除当前组件
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(myContiontar.get(position));
}
//每次滑动时生成的组件
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(myContiontar.get(position));
return myContiontar.get(position);
}
};
//设置适配器
myViewPager.setAdapter(myPagerAdapter);
//设置fragment适配器
// myViewPager.setAdapter(fragmentPagerAdapter);
}
}

布局文件fragment.xml也很简单,不多说了,我就直接上代码了。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"> <FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center|bottom">
<android.support.v4.view.ViewPager
android:id="@+id/first_fragment_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center|bottom">
<ImageView
android:id="@+id/first_fragment_down_image1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
<ImageView
android:id="@+id/first_fragment_down_image2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
<ImageView
android:id="@+id/first_fragment_down_image3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
<ImageView
android:id="@+id/first_fragment_down_image4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
<ImageView
android:id="@+id/first_fragment_down_image5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/wallet_coin_purse_guide_purse_dot_normal"/>
</LinearLayout> </FrameLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2.5"
android:background="@color/fitst_fragment_image_color"/>
</LinearLayout>

效果图:

ViewPager+Fragment实现滑动显示,且Fragment里面又放Fragment+viewPager的更多相关文章

  1. fragment中嵌套viewpager,vierpager中有多个fragment,不显示 .

    fragment中嵌套viewpager,vierpager中有多个fragment,不显示 ... 现在好多应用流行一种布局.底部几个工具栏选项,上面也有类似tab的选项. 底部用RadioGrou ...

  2. 兔子--Fragment与ViewPager要切换滑动效果

    效果图: 文件夹结构: 代码分析: MainActivity.java package com.example.myfragment; /** * @author Arthur Lee * @time ...

  3. Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版

    描述: 之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的: 最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发: APP已经完善了 ...

  4. Android Viewpager+Fragment实现滑动标签页

    ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应. 主页布局 <?xml version="1.0" ...

  5. Android:Fragment+ViewPager实现Tab滑动

    public class FragAdapter extends FragmentPagerAdapter { private List<Fragment> fragments ; pub ...

  6. Fragment利用ViewPager实现左右滑动--第三方开源--SlidingTabLayout和SlidingTabStrip实现

    MainActivity: package com.zzw.fragmentteb; import java.util.ArrayList; import android.graphics.Color ...

  7. Android Fragment 隐藏或显示时调用的生命周期方法

    Fragment使用方式大体分两种: 大家要注意不同的Fragment使用方法,Fragment隐藏和显示调用的生命周期方法是不同的,以下是Fragment显示隐藏调用的方法: //判断是否展示—与V ...

  8. 创建多个Fragment可滑动界面

    创建新项目,选择Tabbed Activity 默认就有2个Fragment,这里我们删除相关代码. 在切换时 FragmentPagerAdapter onDestroyView onCreateV ...

  9. 【Android Developers Training】 70. 使用ViewPager实现屏幕滑动

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

随机推荐

  1. 重拾HTML(一)

    一.网页组成 HTML:网页的具体内容和结构,由N个标签(节点,元素,标记)组成 CSS:网页的样式,美化网页 JavaScript:网页的交互效果,比如用户鼠标的点击事件作出响应   二.常见的HT ...

  2. Android STL PORT

    ndk中包含了stl对应的库,在$(NKD_HOME)/sources/cxx-stl/stlport/stlport 有关Android NDK的C++ STL开发相关总结如下: 从Android ...

  3. .net验证码生成及使用

    验证码的作用: 几年前,大部分网站.论坛之类的是没有验证码的,因为对于一般用户来说验证码只是增加了用户的操作,降低了用户的体验.但是后来各种灌水机器人.投票机器人.恶意注册机器人层出不穷,大大增加了网 ...

  4. 使用FFmpeg解码H264-2016.01.14

    使用jni方式调用FFmepg项目中接口,对H264裸码进行解码. 该Demo主要实现从文件中读取H264编码的视频流,然后使用FFmpeg解码,将解码后的码流保存到文件. 工程目录结构如图所示: A ...

  5. 网络编码 GB2312、GBK与UTF-8的区别

    GB2312.GBK与UTF-8的区别  这是一个异常经典的问题,有无数的新手站长每天都在百度这个问题,而我,作为一个“伪老手”站长,在明白这个这个问题的基础上,有必要详细的解答一下.  首先,我们要 ...

  6. javaSE第七天

    第七天    36 1. 成员变量和局部变量的区别(理解)    36 (1)在类中的位置不同    36 (2)在内存中的位置不同    36 (3)生命周期不同    36 (4)初始化值不同   ...

  7. BochsDebug

    Bochs User Manual   Chapter 8. Tips and Techniques   8.12. Using Bochs internal debugger Note, if yo ...

  8. POJ C程序设计进阶 编程题#3 : 排队游戏

    编程题#3:排队游戏 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 在幼儿 ...

  9. jquery click & get value of attributes of a href

    http://stackoverflow.com/questions/6625667/jquery-click-get-value-of-attributes-of-a-href /* Add a l ...

  10. 配置NTP服务ntpd/ntp.conf(搭建Hadoop集群可参考)

    本文拟定是在一个局域网内(比如一个Hadoop集群)设定一台NTP服务器作为整个网络的标准时间参考,使用网络(集群)内的所有机器保持时间一致!以下是详细的操作步骤: 1. 修改选定的服务器的本地时间 ...