ViewPager和Fragment的组合使用
如图是效果图用的是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的组合使用的更多相关文章
- Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab
今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可 ...
- 【Android 界面效果27】利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果
本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...
- Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果
本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...
- 使用ViewPager切换Fragment时,防止频繁调用OnCreatView
使用ViewPager切换Fragment,我原先使用系统自带的适配器FragmentPagerAdapter. 切换fragment时,频繁调用oncreatview(). 查看FragmentPa ...
- ViewPager之Fragment页面切换
一.概述 ViewPager是android-support-v4中提供的类,它是一个容器类,常用于页面之间的切换. 继上篇文章<ViewPager之引导页>之后,本文主要介绍ViewPa ...
- ViewPager和Fragment的结合使用fragment里包含着listview的常见问题
在我们开发的过程中可能会遇到类似需求,我们需要做一个左右滑动的tab导航,这个时候有些朋友可能会想到viewpager和fragment的结合来实现这个功能:当然实现的方法不单单着一种.我们这个随笔讨 ...
- viewpager和fragment预加载的解决
在使用Viewpager和fragment处理中会出现预加载的问题,最近看别人的代码,终于找到了一个很好的处理方法 能有效的解决预加载的问题,在fragment都继承一个重写setUserVisibl ...
- 防止ViewPager和Fragment结合使用时候的数据预加载
不知道你们使用ViewPager和Fragment结合的时候发现一个问题没,如果你的每个Fragment都需要请求网络数据,并且你在请求网络数据的时候会加入进度对话框的加载显示效果,当你显示第一个Fr ...
- ViewPager结合Fragment进行无限滑动
实现ViewPager结合Fragment实现无限循环切换,这里也是在适配器里面进行的,当然使用滑动监听也能够实现 import android.support.v4.app.Fragment; im ...
随机推荐
- xsocks 64位平台下编译问题小记
1.src/common/public.h uint32_t lpParameter 改为 void* lpParameter; 2.SocksMgr.cpp DWORD WINAPI CSocksM ...
- JavaMelody应用监控使用指南
原文链接:http://www.cnblogs.com/xing901022/p/4116430.html 前言 本文参考JavaMelody的UserGuide编写,部分文字均来自文档,添加有个人理 ...
- synchronized关键字,Lock接口以及可重入锁ReentrantLock
多线程环境下,必须考虑线程同步的问题,这是因为多个线程同时访问变量或者资源时会有线程争用,比如A线程读取了一个变量,B线程也读取了这个变量,然后他们同时对这个变量做了修改,写回到内存中,由于是同时做修 ...
- IIS7 php wordpress 中文url 标签tag中文URL404解决方法
新建重写规则: <rule name="ChineseURL" stopProcessing="true"> <match url=" ...
- 魔兽争霸3 replay 格式
******************************************************************************* * WarCraft III Repla ...
- ZooKeeper与Curator注册和监控
Curator提供了对zookeeper客户端的封装,并监控连接状态和会话session,特别是会话session过期后,curator能够重新连接zookeeper,并且创建一个新的session. ...
- mssql表名列名对应语句
if exists (select * from tempdb..sysobjects where name like '#magic%') drop table #magic go select a ...
- Alsa驱动snd_soc_read的底层实现
在分析snd_soc_codec_driver的结构体时,发现有些芯片的驱动中定义了字段reg_word_size, reg_cache_size, reg_cache_default,但没有定义re ...
- Java知多少(105)套接字(Socket)
网络应用模式主要有: 主机/终端模式:集中计算,集中管理: 客户机/服务器(Client/Server,简称C/S)模式:分布计算,分布管理: 浏览器/服务器模式:利用Internet跨平台. www ...
- vs2010设置
解决方案管理器文件自动定位:工具--选项--项目和解决方案--常规--在解决方案资源管理器中跟踪活动项(前打勾). VAssistX拼写错误的下划波浪线去掉:在VAssistX菜单栏->Visu ...