不懂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(); } } }