viewpager setCurrentItem 过多出现卡顿 ANR 线程阻塞 页面无响应
2016-09-10 10:52
1256 查看
本想让viewpager 默认显示在中间,实现无限轮播,可是,页面会卡住
原因是,viewpager setCurrentItem 设置后,是一页一页滑动到指定位置的,如果设置过多,就会卡死,
解决方法:不要设置太多就好,设置个几十就好
@UiThread
void reflashSlideBannerData(String result) {
if (result != null) {
try {
String list = new JSONObject(result).getString("list");
JSONArray imgs = null;
try {
imgs = new JSONArray(list);
} catch (Exception e) {
Log.e("轮播图片只有一张,出现json转化失败");
return;
}
slideImgsUrl = new String[imgs.length()];
slideImgsHref = new String[imgs.length()];
slideAdvertiseId = new int[imgs.length()];
listImg = new ArrayList<String>();
for (int i = 0; i < imgs.length(); i++) {
JSONObject json = new JSONObject(imgs.get(i).toString());
slideImgsUrl[i] = json.getString("Content");
slideImgsHref[i] = json.getString("LinkUrl");
slideAdvertiseId[i] = json.getInt("AdvertiseID");
listImg.add(slideImgsUrl[i]);
}
slideImageAdapter = new ImageSlideBannerAdapter(LayoutInflater.from(this), this);
myPager.setAdapter(slideImageAdapter);
//设置跳跃幅度过大 ANR出现 设置为40就好
//int listImg_size = (listImg.size() != 0)? (Integer.MAX_VALUE / 2) - (Integer.MAX_VALUE / 2 % listImg.size()) : 0;
myPager.setCurrentItem(40);
slideImageAdapter.notifyDataSetChanged();
new Thread(new Runnable() {
@Override
public void run() {
myPager.setInterval(2000); /// 设置滚动时间间隔
myPager.setDirection(AutoScrollViewPager.RIGHT); // 设置滚动方向
myPager.setCycle(true);
myPager.setAutoScrollDurationFactor(8);
myPager.setStopScrollWhenTouch(true);
myPager.setBorderAnimation(true);
myPager.startAutoScroll();
}
}).start();
setOvalLayout(ovalLayout, R.layout.correcting3_pggmall_home_ad_bottom_item, R.id.ad_item_v,
R.drawable.dot_focused, R.drawable.dot_normal, listImg);
} catch (Exception e) {
}
}
}
原因是,viewpager setCurrentItem 设置后,是一页一页滑动到指定位置的,如果设置过多,就会卡死,
解决方法:不要设置太多就好,设置个几十就好
@UiThread
void reflashSlideBannerData(String result) {
if (result != null) {
try {
String list = new JSONObject(result).getString("list");
JSONArray imgs = null;
try {
imgs = new JSONArray(list);
} catch (Exception e) {
Log.e("轮播图片只有一张,出现json转化失败");
return;
}
slideImgsUrl = new String[imgs.length()];
slideImgsHref = new String[imgs.length()];
slideAdvertiseId = new int[imgs.length()];
listImg = new ArrayList<String>();
for (int i = 0; i < imgs.length(); i++) {
JSONObject json = new JSONObject(imgs.get(i).toString());
slideImgsUrl[i] = json.getString("Content");
slideImgsHref[i] = json.getString("LinkUrl");
slideAdvertiseId[i] = json.getInt("AdvertiseID");
listImg.add(slideImgsUrl[i]);
}
slideImageAdapter = new ImageSlideBannerAdapter(LayoutInflater.from(this), this);
myPager.setAdapter(slideImageAdapter);
//设置跳跃幅度过大 ANR出现 设置为40就好
//int listImg_size = (listImg.size() != 0)? (Integer.MAX_VALUE / 2) - (Integer.MAX_VALUE / 2 % listImg.size()) : 0;
myPager.setCurrentItem(40);
slideImageAdapter.notifyDataSetChanged();
new Thread(new Runnable() {
@Override
public void run() {
myPager.setInterval(2000); /// 设置滚动时间间隔
myPager.setDirection(AutoScrollViewPager.RIGHT); // 设置滚动方向
myPager.setCycle(true);
myPager.setAutoScrollDurationFactor(8);
myPager.setStopScrollWhenTouch(true);
myPager.setBorderAnimation(true);
myPager.startAutoScroll();
}
}).start();
setOvalLayout(ovalLayout, R.layout.correcting3_pggmall_home_ad_bottom_item, R.id.ad_item_v,
R.drawable.dot_focused, R.drawable.dot_normal, listImg);
} catch (Exception e) {
}
}
}
相关文章推荐
- ViewPager setCurrentItem(0)时,OnPageChangeListener onPageSelected() 不响应
- ViewPager调用SetCurrentItem()方法,跨页面跳转时闪屏的问题
- Android面试题-终极解决ViewPager.setCurrentItem中间很多页面切换方案
- ViewPager.setCurrentItem()出现Fragment already active异常
- 批改ViewPager调用setCurrentItem时,滑屏的速度
- 从setCurrentItem(int item)探索ViewPager
- ViewPager setCurrentItem 设置滑动速度
- Viewpage的.setCurrentItem 导致UI线程的执行阻塞问题 广告轮播 数据加载后填充viewpagerAdapter
- 解决ViewPager setCurrentItem 时闪太快
- 修改ViewPager调用setCurrentItem时,滑屏的速度 ,解决滑动之间切换动画难看
- android 只修改ViewPager调用setCurrentItem时,滑屏的速度,其他正常
- 修改ViewPager调用setCurrentItem时,滑屏的速度
- ViewPager的setAdapter和setCurrentItem的方法解析
- SlidingMenu条目点击无响应、Android输入框过多视图改变和ViewPager页面点击切换自然
- viewPager 调用setCurrentItem()无效
- 无限轮播图填坑--ViewPager 调用setCurrentItem(int position) 卡死
- 在onTabSelected里面调用viewPager.setCurrentItem方法发生java.lang.NullPointerException错误
- viewPager.setCurrentItem有一个动画滑动效果
- 解决ViewPager.serCurrentItem滑动页面不顺滑问题
- ViewPager调用setCurrentItem(position)时,跳转Fragment 问题