如图是效果图用的是Viewpager和fragment来实现的主界面

不过其中的预加载我没有解决

如下是代码代码比较简单

package com.ithello.dingding;

import java.util.ArrayList;
import java.util.List; import com.ithello.dingding.fragment.FourFragment;
import com.ithello.dingding.fragment.OneFragment;
import com.ithello.dingding.fragment.ThreeFragment;
import com.ithello.dingding.fragment.TwoFragment; 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.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView; /**
* 主界面
*
* @author zh
*
*/
public class MhomeActivity extends FragmentActivity implements OnClickListener {
private ImageView imageView, imageView2, imageView3, imageView4;
// private Fragment fragment,fragment2,fragment3,fragment4;
private ViewPager viewPager;
private List<Fragment> list; @Override
protected void onCreate(Bundle arg0) {
// TODO Auto-generated method stub
super.onCreate(arg0);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.homeactivity);
setView();
setData();
} private void setView() {
// TODO Auto-generated method stub
imageView = (ImageView) findViewById(R.id.iv_message);
imageView2 = (ImageView) findViewById(R.id.iv_ding);
imageView3 = (ImageView) findViewById(R.id.iv_work);
imageView4 = (ImageView) findViewById(R.id.iv_atten);
viewPager = (ViewPager) findViewById(R.id.viewpager);
imageView.setOnClickListener(this);
imageView2.setOnClickListener(this);
imageView3.setOnClickListener(this);
imageView4.setOnClickListener(this);
} private void setData() {
// TODO Auto-generated method stub
// /**
// * ViewPager.setOffscreenPageLimit(int
// * limit),其中参数可以设为0或者1,参数小于1时,会默认用1来作为参数
// * ,未设置之前,ViewPager会默认加载两个Fragment。所以,我们只需要调用下它,设置下加载Fragment个数即可。
// */
// viewPager.setOffscreenPageLimit(1);
list = new ArrayList<Fragment>();
list.add(new OneFragment());
list.add(new TwoFragment());
list.add(new ThreeFragment());
list.add(new FourFragment()); viewPager.setAdapter(new MyAdapter(getSupportFragmentManager(), list));
viewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
setShow();
if (arg0 == 0) {
imageView.setImageResource(R.drawable.tab_mes_pressed);
} else if (arg0 == 1) {
imageView2.setImageResource(R.drawable.tab_ding_pressed);
} else if (arg0 == 2) {
imageView3.setImageResource(R.drawable.tab_work_pressed);
} else if (arg0 == 3) {
imageView4.setImageResource(R.drawable.tab_attent_pressed);
}
} @Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub } @Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub }
}); } // 用于在下一次事件前重置控件属性
protected void setShow() {
// TODO Auto-generated method stub
imageView.setImageResource(R.drawable.tab_mes_normal);
imageView2.setImageResource(R.drawable.tab_ding_normal);
imageView3.setImageResource(R.drawable.tab_work_normal);
imageView4.setImageResource(R.drawable.tab_attent_normal);
} /**
* 点击事件发生时,相关页面跳转 用setCurrent
*
* @param arg0
*/
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
setShow();
switch (arg0.getId()) {
case R.id.iv_message:
viewPager.setCurrentItem(0);
imageView.setImageResource(R.drawable.tab_mes_pressed);
break;
case R.id.iv_ding:
viewPager.setCurrentItem(1);
imageView2.setImageResource(R.drawable.tab_ding_pressed);
break;
case R.id.iv_work:
viewPager.setCurrentItem(2);
imageView3.setImageResource(R.drawable.tab_work_pressed);
break;
case R.id.iv_atten:
viewPager.setCurrentItem(3);
imageView4.setImageResource(R.drawable.tab_attent_pressed);
break; default:
break;
}
} class MyAdapter extends FragmentPagerAdapter {
List<Fragment> listFragments; public MyAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.listFragments = list;
// TODO Auto-generated constructor stub
} @Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return listFragments.get(arg0);
} @Override
public int getCount() {
// TODO Auto-generated method stub
return listFragments.size();
} }
}

布局的代码就是一个ViewPager和下面的图片

<?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"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" /> <LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@drawable/botton_bg"
android:orientation="horizontal" > <ImageView
android:id="@+id/iv_message"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:contentDescription="@null"
android:paddingTop="5dp"
android:scaleType="fitCenter"
android:src="@drawable/tab_mes_pressed" /> <ImageView
android:id="@+id/iv_ding"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:contentDescription="@null"
android:paddingTop="5dp"
android:scaleType="fitCenter"
android:src="@drawable/tab_ding_normal" /> <ImageView
android:id="@+id/iv_work"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:contentDescription="@null"
android:paddingTop="5dp"
android:scaleType="fitCenter"
android:src="@drawable/tab_work_normal" /> <ImageView
android:id="@+id/iv_atten"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:contentDescription="@null"
android:paddingTop="5dp"
android:scaleType="fitCenter"
android:src="@drawable/tab_attent_normal" />
</LinearLayout> </LinearLayout>

还有4个fragment,我都还没有实现功能

package com.ithello.dingding.fragment;

import com.ithello.dingding.R;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class OneFragment extends Fragment{ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.onefragment, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
System.out.println("1");
} }

ViewPager和Fragment的组合使用的更多相关文章

  1. Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab

     今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可 ...

  2. 【Android 界面效果27】利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  3. Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  4. 使用ViewPager切换Fragment时,防止频繁调用OnCreatView

    使用ViewPager切换Fragment,我原先使用系统自带的适配器FragmentPagerAdapter. 切换fragment时,频繁调用oncreatview(). 查看FragmentPa ...

  5. ViewPager之Fragment页面切换

    一.概述 ViewPager是android-support-v4中提供的类,它是一个容器类,常用于页面之间的切换. 继上篇文章<ViewPager之引导页>之后,本文主要介绍ViewPa ...

  6. ViewPager和Fragment的结合使用fragment里包含着listview的常见问题

    在我们开发的过程中可能会遇到类似需求,我们需要做一个左右滑动的tab导航,这个时候有些朋友可能会想到viewpager和fragment的结合来实现这个功能:当然实现的方法不单单着一种.我们这个随笔讨 ...

  7. viewpager和fragment预加载的解决

    在使用Viewpager和fragment处理中会出现预加载的问题,最近看别人的代码,终于找到了一个很好的处理方法 能有效的解决预加载的问题,在fragment都继承一个重写setUserVisibl ...

  8. 防止ViewPager和Fragment结合使用时候的数据预加载

    不知道你们使用ViewPager和Fragment结合的时候发现一个问题没,如果你的每个Fragment都需要请求网络数据,并且你在请求网络数据的时候会加入进度对话框的加载显示效果,当你显示第一个Fr ...

  9. ViewPager结合Fragment进行无限滑动

    实现ViewPager结合Fragment实现无限循环切换,这里也是在适配器里面进行的,当然使用滑动监听也能够实现 import android.support.v4.app.Fragment; im ...

随机推荐

  1. C#按需序列化对象为Json字符串

    只贴代码,不解释了.新的代理类型确实很给力! public static class JsonHelper { public static string ToJsonString<T>(I ...

  2. Android应用中动态更改主题的实现

    在android应用程序中我们可能需要切换模式,如晚上切换到夜间模式便于阅读等.本文参考了网上的一些资料,并结合实例,实现了动态更改主题的效果. Android中实现theme主题可以使用在activ ...

  3. OllyICE 调试的程序无法处理异常 解决方法

    问题描述 在用OllyICE打开可执行文件时出现如下图所示错误 解决方法 1. 选项 -> 调试设置 , 打开调试选项 2. 切换到 异常 页签 3. 取消勾选 忽略(传递给程序)以下异常: 单 ...

  4. (一)u-boot-nand.bin的下载

    编译.连接好u-boot-nand.bin首先想到是如何下载到OK6410上,有3种方法: (1)dnw方法 (2)tftp方法 (3)sd卡方法 3种方法各有优点和缺点,下面逐一介绍: 一.dnw方 ...

  5. 浅析 mondrian 模式文件 Schema

    1.前言 前面几篇文章一经介绍过saiku.模式文件和MDX的关系.通俗点说模式文件(Schema)就是一个xml,里面定义了一个虚拟立方体,共MDX查询语言使用. 2.模式文件 Schema 最顶层 ...

  6. 有了malloc/free为什么还要new/delete ?

    malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符.它们都可用于申请动态内存和释放内存. 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的 ...

  7. Selenium关键字驱动测试框架Demo(Java版)

    Selenium关键字驱动测试框架Demo(Java版)http://www.docin.com/p-803493675.html

  8. [转]Python零碎知识(2):强大的zip

    一.代码引导 首先看这一段代码: 1 >>> name=('jack','beginman','sony','pcky') 2 >>> age=(2001,2003 ...

  9. LeetCode:4_Median of Two Sorted Arrays | 求两个排序数组的中位数 | Hard

    题目: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the ...

  10. Xamarin.Forms中的ListView的ItemTrapped事件与ItemSelected事件的区别

    今天对Xamarin.Forms中的ListView的两个事件(ItemTrapped和ItemSelected)做了小小的研究,发现有以下几点区别: 1.ItemTrapped事件会优先被触发. 2 ...