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://www.jxjierui.cn/article/djeigd.html


咨询
建站咨询
