如图是效果图用的是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. 我的web框架

    我的web框架 ========================================================== 前端:css(bootstrap,自己的代码片段),js(jque ...

  2. CLR via C# 提纲

    第I部分 CLR基础第1章 CLR的执行模型 31.1 将源代码编译成托管模块 31.2 将托管模块合并成程序集 61.3 加载公共语言运行时 81.4 执行程序集的代码 101.4.1 IL和验证 ...

  3. DS1337 时钟芯片在 C8051F 上的实现

    一.DS1337介绍 DS1337串行实时时钟芯片是一种低功耗.全部采用BCD码的时钟日历芯片,它带有两个可编程的定时闹钟和一个可编程的方波输出.其地址和数据可通过I2C总线串行传输,能提供秒.分.时 ...

  4. 超时时间已到。在操作完成之前超时时间已过或服务器未响应。 (.Net SqlClient Data Provider)

    超时时间已到.在操作完成之前超时时间已过或服务器未响应. (.Net SqlClient Data Provider) 在做一个小东西的时候出现了这个问题,就是使用VS调试几次项目后,使用SQL Se ...

  5. 那些年做过的 .NET Web 项目和 iOS 之路的一些思考

    从2010年3月份出来工作到2015年初,做过的大大小小的 .NET Web 项目如下: (1)售楼系统产品    「Role: Team Member」 (2)中弘合同管理系统    「Role: ...

  6. Factorization Machine

    Factorization Machine Model 如果仅考虑两个样本间的交互, 则factorization machine的公式为: $\hat{y}(\mathbf{x}):=w_0 + \ ...

  7. spring 启动流程

    AbstractApplicationContext 分析 启动流程 // Prepare this context for refreshing.prepareRefresh(); 1. // In ...

  8. ODBC连接问题

    http://zhidao.baidu.com/link?url=EPEMTuGC1q5wWavZigWseoHOwRLvpHyAVsdIgMLspErJOUZMEepIICUnT9IdkPQlYTm ...

  9. CSS3实现倒计时

    CSS3实现倒计时小程序,界面如下: 代码如下: <style> body,html{ margin:0px; height:100%; } body{background: #000; ...

  10. apache.http.MalformedChunkCodingException: Chunked stream ended unexpectedly

    产生的原因,应该是服务器返回的数据不是规范的格式 .我使用的xutils的httpUtils来实现网络通信的,关于读取数据是在 StringDownloadHandler类中源代码 inputStre ...