如图是效果图用的是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. Java Arrays 排序

    Java SDK中的排序分为两种情况: .对基础类型数组的排序,使用DualPivotQuicksort类 a.如果是对char.short数组的排序,因为byte.char.short分别为8bit ...

  2. Android程序的签名保护及绕过方法

    随着Android 市场的扩大,各类盗版.破解.打包党纷纷涌现,其使用的手法无非是apk _> smali ->修改代码 ->重打包签名,为对抗此类技术,广大程序员挖掘了Androi ...

  3. [转]两种Sigma-Delta ADC SNR仿真方法

    假设现有一组Sigma-Delta ADC输出序列,下面将介绍两种计算出相应SNR的方法.其中由cadence导出数据的CIW窗口命令为:ocPrint(?output "输出目录/输出文件 ...

  4. Qt编写自定义控件插件路过的坑及注意事项

    在一日一控件的口号下,终于写好了五十几个自定义控件,包括各种仪表盘,各种温度计,各种进度条,各种按钮等,具体可参见(http://www.cnblogs.com/feiyangqingyun/p/61 ...

  5. MFC的消息管理

    一般而言,与视图状态和用户输入有关的命令由视图类来处理,与文件操作有关的命令由文档类来处理,与窗口布局有关的命令由主框架类来处理,与程序的运行状态有关的命令由APP类来处理.

  6. 一款基于HTML5的Web 3D开发工具

    在我们协助客户进行3D应用的开发过程中,客户遇到的最头疼的问题是如何在短时间内学会使用TWaver 3D引擎,以及使用TWaver 3D来创建和导入项目所需的各种3D业务模型.由于项目涵盖的行业繁多. ...

  7. Android通过编码实现GPS开关

    在Android 2.2以后才可使用 import android.content.ContentResolver; import android.content.Context; import an ...

  8. MVC 4 中编译时,让View 也弹出异常

    前言 MVC在编译时,不会提示View中的错误,我们在发布项目的时候会一个一个的提示异常,项目大的时候会非常头疼,因为每次发布都需要至少5分钟,最后收到只有一个异常信息,如果页面异常过多,例如最近整理 ...

  9. [Python] Magic editor in Pycharm

    From: http://blog.csdn.net/u013088062/article/details/50249751 From:http://blog.csdn.net/u013088062/ ...

  10. Swift3.0_注释,警告,todo的写法

    一. Swift3.0 不支持写Prama的注释了. 也不能打#warning了. 二. 取代方法 1. 注释: //MARK: - setter & getter 2.警告 //FIXME: ...