Viewpage实现左右无限滑动

实现逻辑参考:http://www.cnblogs.com/xinye/archive/2013/06/09/3129140.html

代码:如下

public class MainActivity extends Activity implements
		OnPageChangeListener {
	private ViewPager viewpager;
	private int view[] = { R.layout.a, R.layout.b, R.layout.c };
	private List<View> data = new ArrayList<View>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		init();
		initViewPagerData();
	}

	private void initViewPagerData() {
		data.add(0,
				LayoutInflater.from(this).inflate(view[view.length - 1], null));
		for (int i = 0; i < view.length; i++) {
			data.add(i + 1, LayoutInflater.from(this).inflate(view[i], null));
		}
		data.add(view.length + 1,
				LayoutInflater.from(this).inflate(view[0], null));

		viewpager.setAdapter(new ViewPagerAdapter(data, this));
		viewpager.setCurrentItem(1, false);
	}

	private void init() {
		// 初始化界面
		viewpager = (ViewPager) findViewById(R.id.viewpager);
		// 添加事件
		viewpager.setOnPageChangeListener(this);

	}

	@Override
	public void onPageScrollStateChanged(int arg0) {

	}

	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
		// 无限循环滑动
		if (view.length > 1) {// 多于一个view才会循环跳转
			if (arg0 == 0 && arg2 == 0) {
				// 切换循环更加流畅,不会出现生硬的切换感觉
				arg0 = view.length;
				viewpager.setCurrentItem(arg0, false);
			} else if (arg0 > view.length) {
				viewpager.setCurrentItem(1, false);
			}
		}
	}

	@Override
	public void onPageSelected(int arg0) {

	}
}

  

时间: 2024-11-19 03:43:22

Viewpage实现左右无限滑动的相关文章

[Android UI]可自动切换、无限滑动的图片广告展示栏的实现分享(续1)

本文非技术类文章,博主只是想分享这样的一种实现方法,帮助有需要的开发人员减少工作量.我是学java出身的,做开发2年了,很理解一句话:工欲善其事必先利其器. 继另一篇博文:[Android初级]可自动切换.无限滑动的广告栏的实现  ,我觉得还有更好的方式来展示,这个比较合适更多开发人员. 本次实现的demo,用到了第三方的开源框架:1.JazzyViewPager https://github.com/jfeinstein10/JazzyViewPager(主要用它,效果比较多) 2.unive

[UI列表]LoopScrollRect无限滑动不卡顿

应用场景 对于背包界面,排行榜列表,聊天消息,等有大量的UI列表的界面,常规做法是为每一条数据生成一个格子,在数据量越大的情况下,会生成越来越多的Gameobject,引起卡顿. 这篇文章讲述的就是解决UI列表卡顿的方法,在列表中只生成指定数量的Gameobject,滑动时进行数据更新,保证性能. LoopScrollRect(无限滑动不卡顿) 插件地址:https://github.com/qiankanglai/LoopScrollRect 中文文档:http://qiankanglai.m

用Flutter实现的无限滑动Banner

BannerGalleryInFlutter用Flutter实现的无限滑动Banner可配置的属性使用示例 /// 构建数据 List<BannerGalleryBean> _createTestData() { List<BannerGalleryBean> list = new List<BannerGalleryBean>(); for (int n = 0; n < IMGS.length; n++) { list.add(BannerGalleryBea

ViewPager结合Fragment进行无限滑动

实现ViewPager结合Fragment实现无限循环切换,这里也是在适配器里面进行的,当然使用滑动监听也能够实现 import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.view.ViewGroup; import java.util.Array

Android 使用ViewPager真正实现左右无限滑动(附源码)

前言 网上有很多使用ViewPager实现左右滑动这一效果的资料,这些资料大多数都是将PagerAdapter中getCount()方法的返回值设为Integer.MAX_VALUE使用户看不到边界,然后在instantiateItem()方法中通过position%(要循环显示的数据集的长度)的方式取得对应的数据集.这样虽然可以做到无限循环,但是会有两个弊端:首先会创建大量对象,容易引起内存溢出(循环加载图片)从而影响性能:其次从第一页向右滑动的时候是无法滑动的. 今天给大家分享的是另一种实现

制作一个简易的UGUI无限滑动框(Unity)

市面上有很多这种无限拖拽的插件 但是功能细化的太严重了 改的话有些耗时 如果没有太多严苛的需求没必要改工程量比较大的插件 完全可以自己写一个 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ItemRect { public Rect mRect; //格子的索引 因为是用来关联位置的 所以不存在删除或修改操作 pub

Android学习——ViewPage实现多页面滑动效果

第一步 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"     android:layout_height="match_parent"  tool

无限滑动

<html><head> <meta charset="utf-8"> <title></title> <style type="text/css"> body,ul,li,img{ margin: 0; padding: 0; list-style: none; } .all{ margin: 100px auto; width: 500px; height: 500px; border: 1

一行代码引入 ViewPager 无限循环 + 页码显示

(出处:http://www.cnblogs.com/linguanh) 前序: 网上的这类 ViewPager 很多,但是很多都不够好,体现在 bug多.对少页面不支持,例如1~2张图片.功能整合不全(无限+页码)等等,本类由我从零到无完成的,基本已找完 bug,注释丰富,方便大家理解. 特点: 1,代码量少 , 共两个类,约合 310 行代码 (除去注释) 2,可扩展 , 再加个 handler 即可实现自动轮播 3,时间复杂度低 4,耦合度低,只依赖了 imageLoader,可以自己切换