Android 查看页面-最后一项?安卓
我的应用程序中有20个图像。。当用户在应用程序中向左/向右滑动时,我使用ViewPager显示上一个/下一个图像??我想在用户在最后一张图像中向右滑动时显示“重复”屏幕 这是我的密码Android 查看页面-最后一项?安卓,android,android-viewpager,Android,Android Viewpager,我的应用程序中有20个图像。。当用户在应用程序中向左/向右滑动时,我使用ViewPager显示上一个/下一个图像??我想在用户在最后一张图像中向右滑动时显示“重复”屏幕 这是我的密码 viewPager = (ViewPager) findViewById(R.id.main_viewpager); ImagePagerAdapter adapter = new ImagePagerAdapter(); viewPager.setAdapter(adapter); PageListener
viewPager = (ViewPager) findViewById(R.id.main_viewpager);
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
PageListener pageListener = new PageListener();
viewPager.setOnPageChangeListener((OnPageChangeListener) pageListener);
int currentPage;
private class PageListener extends SimpleOnPageChangeListener{
public void onPageSelected(int position) {
--- some code -----
currentPage = position;
}
}
private class ImagePagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return mImages.size();
}
-- other implemented methods ---
}
当用户滑动到viewpager中最后一个元素的右侧时,是否可以捕获事件???您可以通过在viewpager上设置自定义onChangePageListener来实现这一点,就像您开始时一样。我想这样做:
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
//...
@Override
public void onPageSelected(int arg0) {
onPageChanged(arg0);
}
//...
});
然后在你的活动中
public void onPageChanged(int position) {
if(position == SOMETHING) //do something
}
希望这有帮助您可以抓取一个viewpager实例并调用:
PagerAdapter pg = viewPager.getAdapter();
int i = pg.getCount();
这将返回viewPager中的页数。现在,您可以执行以下操作:
应用条件检查当前页面的总计数。。。
请注意,第一页是[0],第二页是[1],第三页是[2]…当前页的计数由
viewPager.getCurrentItem()
希望这能解决你的问题 由此:
您可以扩展ViewPager
类,然后重写onTouchEvent()
方法:
这里举一个例子:
public class MxTViewPager extends ViewPager {
public MxTViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
float mStartDragX;
OnSwipeOutListener mListener;
public void setOnSwipeOutListener(OnSwipeOutListener listener) {
mListener = listener;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (getCurrentItem() == getAdapter().getCount() - 1) {
final int action = ev.getAction();
float x = ev.getX();
switch (action & MotionEventCompat.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
mStartDragX = x;
break;
case MotionEvent.ACTION_UP:
if (x < mStartDragX) {
mListener.onSwipeOutAtEnd();
} else {
mStartDragX = 0;
}
break;
}
} else {
mStartDragX = 0;
}
return super.onTouchEvent(ev);
}
public interface OnSwipeOutListener {
public void onSwipeOutAtEnd();
}
公共类MXTviewPage扩展了ViewPager{
公共MXTviewPage(上下文、属性集属性){
超级(上下文,attrs);
}
浮动mStartDragX;
OnswitpeOutliner-mListener;
公共无效设置OnSwipeOutliner(OnSwipeOutliner侦听器){
mListener=监听器;
}
@凌驾
公共事件(MotionEvent ev){
如果(getCurrentItem()==getAdapter().getCount()-1){
final int action=ev.getAction();
float x=ev.getX();
开关(action&MotionEventCompat.action\u掩码){
case MotionEvent.ACTION\u DOWN:
mStartDragX=x;
打破
case MotionEvent.ACTION\u UP:
如果(x
}
希望它能帮助你