ViewPager 的循环滚动
来源:互联网 发布:淘宝评价有效期 编辑:程序博客网 时间:2024/05/24 06:36
ViewPager 的循环滚动
实现原理:滑动到最后一张的时候,再滑动会到第一次的位置
有两种实现方式:
1. 将count 设置为无限大,当前位置设置成Integer.MAXVALUE/2-Integer.MAXVALUE/2%size,使他左右都能滚动
2.不断循环,用handler发送消息,让他切换(pager.setCurrentItem(int pos,false);)可以去除调转到第一张的动画效果
效果图如下:
代码:
package com.lei.vpdemo;
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.widget.TextView;
import com.lei.vpdemo.frg.ImageFrg;
public class MainActivity extends FragmentActivity implements
OnPageChangeListener {
private ViewPager mPager;
private TextView mShowTv;
private int[] data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
mPager.setAdapter(adapter);
int n = Integer.MAX_VALUE / 2 % data.length;// 2147483647 / 2 = 1073741823
int itemPosition = Integer.MAX_VALUE / 2 - n;
mPager.setCurrentItem(itemPosition);// 选择第一张处于无限大的位置,以便能作滑
}
private void initView() {
mPager = (ViewPager) findViewById(R.id.viewpager);
mShowTv = (TextView) findViewById(R.id.show_tv);
data = new int[] { R.drawable.earth, R.drawable.sky1, R.drawable.sky2,
R.drawable.sky3, R.drawable.sky4 };
mPager.setOnPageChangeListener(this);
}
// 触动滑动事件
public void onPageScrollStateChanged(int arg0) {
}
// 滑动: arg0:当前滑动位置position arg1:滑动偏移量
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
// 滑动停止,选中位置position
public void onPageSelected(int arg0) {
mShowTv.setText(String.valueOf(arg0 % data.length));
}
class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
int count = data.length;
return ImageFrg.newInstance(data[arg0 % count]);// 滑动到最后一张,再滑动又加载的第一张图片
}
@Override
public int getCount() {
return Integer.MAX_VALUE;//将他的子view设置到无限大,以此实现无限循环
}
}
}
- ViewPager 的循环滚动
- ViewPager和Gallery的循环滚动
- viewpager无限循环滚动遇到的坑
- ViewPager 循环滚动
- ViewPager实现循环滚动
- ViewPager无限循环,自动滚动,兼容PageIndicator的ViewPager
- ViewPager添加圆点indicator,及ViewPager的循环滚动、自动滚动
- ViewPager制作循环滚动图片
- ViewPager定时左右循环滚动
- AutoScrollViewPager 自动循环滚动viewpager
- ViewPager实现无线循环滚动
- viewPager+fragment实现循环滚动
- ViewPager实现图片循环滚动
- Android无限循环滚动ViewPager
- 关于自动滚动无限循环viewpager的问题
- Android自动滚动 轮播循环的ViewPager
- viewpager循环滚动和自动轮播的问题
- Android自动滚动 轮播循环的ViewPager
- python表达式操作符与数学函数
- AutoLayout(自动布局)入门
- micorchip单片机芯片资料(中文的)
- 你不知道的JavaScript--Item30 数组进阶全掌握
- leetcode 49:Group Anagrams
- ViewPager 的循环滚动
- Wildcard Matching
- 杭电3079 Vowel Counting
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- eclipse 任务管理器
- 感兴趣的一个小问题的排序
- 与Java Web Service相关的若干概念(JAX-WS,JAX-RS)
- LeetCode Longest Substring Without Repeating Characters
- C语言网络编程(三)建立套接字通讯TCP