viewpager fragment 滑动界面
先新建几个fragment,包括java和xml
然后在主界面的布局文件中:
<android.support.v4.view.ViewPager
android:id="@+id/main_viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"> </android.support.v4.view.ViewPager>
然后在java中,实现viewpager的适配器,其中imageMove函数是用来选择时让下方标签的阴影做一个平移动画。
class MyFrageStatePagerAdapter extends FragmentStatePagerAdapter
{
private List<Fragment> fragmentlist;
public MyFrageStatePagerAdapter(FragmentManager fm, List<Fragment> fragmentlist2)
{
super(fm);
fragmentlist = fragmentlist2;
} @Override
public Fragment getItem(int position) {
return fragmentlist.get(position);
} @Override
public int getCount() {
return fragmentlist.size();
} /**
* 每次更新完成ViewPager的内容后,调用该接口,此处复写主要是为了让导航按钮上层的覆盖层能够动态的移动
*/
@Override
public void finishUpdate(ViewGroup container)
{
super.finishUpdate(container);//这句话要放在最前面,否则会报错
//获取当前的视图是位于ViewGroup的第几个位置,用来更新对应的覆盖层所在的位置
int currentItem=main_viewpager.getCurrentItem();
if (currentItem==currenttab)
{
return ;
}
imageMove(main_viewpager.getCurrentItem());
currenttab=main_viewpager.getCurrentItem();
} } /**
* 移动覆盖层
* @param moveToTab 目标Tab,也就是要移动到的导航选项按钮的位置
* 第一个导航按钮对应0,第二个对应1,以此类推
*/
private void imageMove(int moveToTab)
{
int startPosition=0;
int movetoPosition=0; startPosition=currenttab*(screenWidth/4);
movetoPosition=moveToTab*(screenWidth/4);
//平移动画
// TranslateAnimation translateAnimation=new TranslateAnimation(startPosition,movetoPosition, 0, 0);
// translateAnimation.setFillAfter(true);
// translateAnimation.setDuration(200);
// imageviewOvertab.startAnimation(translateAnimation);
}
fragmentList = new ArrayList<Fragment>();
fragmentList.add(new MessageFragment());
fragmentList.add(new FriendsFragment());
fragmentList.add(new FunctionFragment());
fragmentList.add(new MineFragment());
//
main_viewpager.setAdapter(new MyFrageStatePagerAdapter(getSupportFragmentManager(),fragmentList));
viewpager_compose.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
//第一个参数为变化后的X轴位置
//第二个参数为变化后的Y轴的位置
//第三个参数为原先的X轴的位置
//第四个参数为原先的Y轴的位置
public void onScrollChange(View view, int i, int i1, int i2, int i3) {
Log.d(TAG, "onScrollChange: 参数一"+String.valueOf(i));
Log.d(TAG, "onScrollChange: 参数二"+String.valueOf(i2));
}
});
让Fragment保留不销毁:
- 方案一:设置ViewPager的缓存界面数
mPager .setOffscreenPageLimit(2);
参数:int limit - 缓存当前界面每一侧的界面数
- 方案二:保存状态并恢复
- 方案三(推荐):复用Fragment的RootView
@Override
public void onDestroyView() {
LogUtils.d(TAG , "-->onDestroyView");
super .onDestroyView();
if (null != FragmentView) {
((ViewGroup) mFragmentView.getParent()).removeView(mFragmentView);
}
}
步骤2:在onCreateView方法内复用RootView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LogUtils.d (TAG, "-->onCreateView");
if (null == mFragmentView) {
mFragmentView = inflater.inflate(R.layout.fragment, container, false);
mListView = (ListView) mFragmentView .findViewById(R.id.mm_listview);
mListView.setAdapter(mAdapter);
mPbar = (ProgressBar) mFragmentView.findViewById(R.id.pbar_mm_loading);
mPbar.setVisibility(View.VISIBLE);
} return mFragmentView ;
}
viewpager fragment 滑动界面的更多相关文章
- viewpager+fragment滑动切换卡顿问题
最近在做项目的时候遇到个问题,viewpager中的fragment添加使用listview添加数据后出现滑动卡顿,造成用户体验感极差.找了很久的资料,也试了很多大方法,在这里给大家分享下: 1.添加 ...
- ViewPager +Fragment 滑动游标
一.我的博客https://github.com/anan03/ananwork/tree/master/anan1.加入compile 'com.gxz.pagerslidingtabstrip:l ...
- fragment滑动界面
1.代码页面 package com.example.fragment_list_copy; import android.app.FragmentManager;import android.sup ...
- ViewPager+Fragment 滑动菜单效果 实现步骤
1.xml中引用ViewPager <android.support.v4.view.ViewPager android:id="@+id/viewPa ...
- 【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析
ViewPager中切换界面Fragment被销毁的问题分析 1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3 2.Fragment生命周期以及与Activ ...
- 转载【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析
ViewPager中切换界面Fragment被销毁的问题分析 原文链接 http://www.cnblogs.com/monodin/p/3866441.html 1.使用场景 ViewPager+ ...
- ViewPager中切换界面Fragment被销毁的问题
ViewPager中切换界面Fragment被销毁的问题分析 使用ViewPager+Fragment实现界面切换,当界面数量大于3时,出现二次滑动后数据消失的情况,下面由Fragment生命周期进行 ...
- ViewPager Fragment PagerAdapter MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 使用ViewPager+Fragment来实现带滚动条的多屏滑动-IndicatorFragmentActivity
转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/17201587 介绍 在android应用中,多屏滑动是一种很常见的风格,博主 ...
随机推荐
- [ilink32 Error] Fatal: Unable to open file 'SDDEBUG.OBJ'
[ilink32 Error] Fatal: Unable to open file 'SDDEBUG.OBJ' 这个路径NativeXml407\general\sdDebug.pas找不到了 修正 ...
- curl发送xml , xml和数组互转
public function postXml($url, array $data) { // pack xml $xml = $this->arrayToXml($data); // curl ...
- PhotoShop阵列功能
阵列有两种,如下.但是PS没有阵列这一工具,一定要用ps的话,可以参照以下两条: 1:方形阵列 先按CTRL+ALT+T 会出现一个自由变换选取 但是这个是多重复制的选取只要一动就能复制了 确定 然后 ...
- flash时间轴声音大小控制
A2时间轴声音大小控制: var sound:Sound = new Sound(); sound.setVolume(200); 把背景音乐放到一个影片剪辑里,剪辑起名 例如bgm_mc 声音模式为 ...
- WDA-5-VIEW视图切换
这一部分介绍同一窗口下不同视图之间的链接跳转. 前提:完成上一步骤MAIN视图ALV显示. 1.效果展示 点击ALV物料下划线链接,页面跳转到物料明细页面. 2.实现过程 基于上一步骤在MAIN页面显 ...
- Java,AWTUtilities,eclipse报编译错误:Access restriction: The type 'AWTUtilities' is not API (restriction on required library 'C:\Program Files\Java\jre7\lib\rt.jar')
[场景]调用com.sun.awt.AWTUtilities时,eclipse提示编译错误: Access restriction: The type 'AWTUtilities' is not AP ...
- 开发webapp手机返回键 退出问题 摘录
mui进行手机物理键的监听 确保引入mui 调用以下函数 // android 返回按键处理 androidBack(store, data) { try { mui.init({ keyEventB ...
- C++复习:异常
异常处理机制专题 前言 1)异常是一种程序控制机制,与函数机制独立和互补 函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它依附于栈结构,却可以同时设置多个异常类型作 ...
- while 循环居然可以用else
while 循环居然可以用else python 3 while a<50: print a a=a+1 else: print"over."
- VS Code 使用笔记
改变 UI 语言 How to change UI language in Visual Studio Code? 设置 Tab 空格 How to set tab-space style?