AndroidViewPager怎么去实现无限循环滚动回绕效果-创新互联

不懂Android ViewPager怎么去实现无限循环滚动回绕效果?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。

网站建设、网站设计的开发,更需要了解用户,从用户角度来建设网站,获得较好的用户体验。创新互联建站多年互联网经验,见的多,沟通容易、能帮助客户提出的运营建议。作为成都一家网络公司,打造的就是网站建设产品直销的概念。选择创新互联建站,不只是建站,我们把建站作为产品,不断的更新、完善,让每位来访用户感受到浩方产品的价值服务。

android系统提供的ViewPager标准方式是左右可以自由滑动,但是滑动到最左边的极限位置是第一个page,滑动到最右边的位置是最后一个page,当滑动到最左或者最右时候,就不能再滑动/滚动了,这是Android系统默认的ViewPager实现方式。

但是有些情况下开发者可能希望ViewPager能够智能的无限循环滚动回绕,比如现在总共有编号1, 2, 3, 4, 5的5个Page。

(1)当用户手指从右往左滚动到最右边/最后面的页面5时候,如果此时用户继续拖住ViewPager往左边滑动,那么ViewPager将回绕、循环到第一个Page -> 1,接着就是2,3,4,5;

(2)反过来,如果当用户手指从左往右,滑到最左边的第一个Page:1时候,如果此时继续拖住ViewPager继续从左往右滑动,那么将回绕到5,接着就是4,3,2,1.

我们把这种ViewPager称之谓“无限循环滚动回绕”的ViewPager。

这种类型的ViewPager网上有较多实现方式,现在给出一个流程较广的代码实现。

写一个测试的MainActivity.Java:

package zhangphil.demo;

import java.util.Random;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MainActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 LoopViewPager viewpager = (LoopViewPager) findViewById(R.id.viewpager);
 viewpager.setAdapter(new SamplePagerAdapter());
 }

 public class SamplePagerAdapter extends PagerAdapter {
 private final Random random = new Random();
 private int mSize;

 public SamplePagerAdapter() {
 mSize = 5;
 }

 public SamplePagerAdapter(int count) {
 mSize = count;
 }

 @Override
 public int getCount() {
 return mSize;
 }

 @Override
 public boolean isViewFromObject(View view, Object object) {
 return view == object;
 }

 @Override
 public void destroyItem(ViewGroup view, int position, Object object) {
 view.removeView((View) object);
 }

 @Override
 public Object instantiateItem(ViewGroup view, int position) {
 TextView textView = new TextView(view.getContext());

 textView.setText(position + 1 + "");
 textView.setBackgroundColor(0xff000000 | random.nextInt(0x00ffffff));
 textView.setGravity(Gravity.CENTER);
 textView.setTextColor(Color.WHITE);
 textView.setTextSize(50);
 view.addView(textView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

 return textView;
 }

 // 增加item
 public void addItem() {
 mSize++;
 notifyDataSetChanged();
 }

 // 删除item
 public void removeItem() {
 mSize--;
 mSize = mSize < 0 ? 0 : mSize;

 notifyDataSetChanged();
 }
 }
}

当前文章:AndroidViewPager怎么去实现无限循环滚动回绕效果-创新互联
转载来于:http://scyanting.com/article/djeigd.html