我必须使用无休止的自动滚动功能来构建视图寻呼机。另外,我需要在视图寻呼机下方显示一个页面指示器,该指示器应根据滚动事件进行响应。我目前为无尽的自动滚动应用了以下逻辑:
public void setupAutoPager(最终int大小){ 最终处理程序处理程序= new Handler();
final Runnable update = new Runnable() {
public void run() {
promotionViewPager.setCurrentItem(currentPage);
if (currentPage >= size - 1) {
currentPage = 0;
} else {
++currentPage;
}
}
};
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(update);
}
}, 500, 2500);
}
问题:当第一项再次从自动滚动的最后一项返回时,视图寻呼机的动画在向后移动,因为再次到达该位置(看起来像闪烁的向后退),而当自动滚动从第一项到第二个元素时,动画向前(进入下一个元素)。我希望动画应始终朝前。当我将视图传呼机的当前项到达结尾时将其设置为0位置时,会出现向后动画。如何实现。
答案 0 :(得分:1)
我知道这篇文章已有几个月的历史,但是我是构建android应用程序的初学者,而且我也面临着同样的问题。 即使绝对不是最佳选择,我也会尝试以下方法。...
ViewPager
进行更改后将其删除。getItem(int position)
和getCount()
:return yourFragmentArray.get(position);
和return yourFragmentArray.size();
ViewPager
填充相同的片段(如果需要,可以添加新片段),并删除用于填充VP的片段,因此您再也不会回去。
private int size = yourFragmentArray.size();
public void setupAutoPager(final int size) {
final Handler handler = new Handler();
currentPage = promotionViewPager.getCurrentItem();
final Runnable update = new Runnable() {
public void run() {
if (currentPage == size - 1) {
// Add the fragment to your fragmentArray
// Only the rank 0 needs to be taking care, works like in queue
yourFragmentArray.add(yourFragmentArray.get(0));
// Notify the changes made
yourAdapter.notifyDataSetChanged();
// Set the next item
promotionViewPager.setCurrentItem(currentPage + 1);
yourFragmentArray.remove(0);
// Update the size
size += 1;
}
else {
promotionViewPager.setCurrentItem(currentPage + 1);
}
}
};
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(update);
}
}, 500, 2500);
}
对于我来说,逻辑就在这里,再次可能这不是最好的方法,但是我暂时看不到。
祝你好运!只要可以自己测试,我就会立即更新。
更新:
更好的方法是添加此方法:
firstMaxSize
中。使用一个计数器(如果这是您第一次遍历适配器片段,我们将不会删除它们),但是if(counter != 0)
我们将遍历yourFragmentArray()
并从0中删除到firstMaxSize
。
致电yourAdapter.notifyDataSetChanged()
然后将所有新片段重新添加一遍。如果已经存在现有片段的问题,请根据该片段的内容创建一个新片段。
再次致电yourAdapter.notifyDataSetChanged()
确实非常沉重,我很确定存在另一种最简单的方法,但尚未找到它。