android关于ViewPager加载多个(多达1000个)Fragment黑屏现象。 viewpagerandroidfragment 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 黑屏会不会是因为图片没有加进去呢,我之前研究过ViewPager,它左右滑动时,系统调用方法的顺序也是有区别的,也许问题在这里。 刚刚用Textview试了一下。没有问题。那应该和ImageView或者说和加载图片有关系了。可是加载图片的方式是测试过的,异步的,GridView3列,加载1000张大图都不会OOM,只是很卡,很慢而已,这也是不可避免的。 先不说滑来滑去的问题,就一直向后滑,黑屏问题。 你说的图片没有加载进去,要咋测试比较好,我准备debug到黑屏Fragment,看是否打印的图片地址。 本人菜鸟,感觉debug起来乱糟糟的。还是对ViewPager了解的不够。 刚刚用Textview试了一下。没有问题。那应该和ImageView或者说和加载图片有关系了。可是加载图片的方式是测试过的,异步的,GridView3列,加载1000张大图都不会OOM,只是很卡,很慢而已,这也是不可避免的。 先不说滑来滑去的问题,就一直向后滑,黑屏问题。 你说的图片没有加载进去,要咋测试比较好,我准备debug到黑屏Fragment,看是否打印的图片地址。 本人菜鸟,感觉debug起来乱糟糟的。还是对ViewPager了解的不够。我在想如果textView都没问题的话,那就应该是加载问题,你这样,直接设置几张默认图片,不去异步加载新图试试。如果这样没问题那问题我估计就出在了异步加载图片上了。打印地址跟图片加没加进来没太大关系吧,还不如直接设置个图片加载完毕的标志符,Log输出这个标识符。 刚刚用Textview试了一下。没有问题。那应该和ImageView或者说和加载图片有关系了。可是加载图片的方式是测试过的,异步的,GridView3列,加载1000张大图都不会OOM,只是很卡,很慢而已,这也是不可避免的。 先不说滑来滑去的问题,就一直向后滑,黑屏问题。 你说的图片没有加载进去,要咋测试比较好,我准备debug到黑屏Fragment,看是否打印的图片地址。 本人菜鸟,感觉debug起来乱糟糟的。还是对ViewPager了解的不够。我在想如果textView都没问题的话,那就应该是加载问题,你这样,直接设置几张默认图片,不去异步加载新图试试。如果这样没问题那问题我估计就出在了异步加载图片上了。打印地址跟图片加没加进来没太大关系吧,还不如直接设置个图片加载完毕的标志符,Log输出这个标识符。刚刚用的三张图片放在drawable文件夹下实验了一下。确实不会有问题。我在加载的工具类里,在bitmap加载成功后,打印succ标识,黑屏的Fragment也能打印。 你说的写法有问题是什么意思?我用的就是一般的ViewPager,然后setAdapter。private class PreviewFragmentAdapter extends FragmentStatePagerAdapter { public PreviewFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment = null; if (showType == NORMAL_TYPE && currentList != null && !currentList.isEmpty()) { fragment = new PhotoPreviewFragment(currentList.get(position)); } else if (showType == APPOINT_TYPE && outerList != null && !outerList.isEmpty()) { fragment = new PhotoPreviewFragment(outerList.get(position)); } return fragment; } @Override public int getCount() { int size = 0; if (showType == NORMAL_TYPE && currentList != null) { size = currentList.size(); } else if (showType == APPOINT_TYPE && outerList != null) { size = outerList.size(); } return size; } @Override public void destroyItem(View container, int position, Object object) { super.destroyItem(container, position, object); Log.e(TAG, "destroyItem1 position=" + position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); Log.e(TAG, "destroyItem2 position=" + position); } }默认showType是NORMAL_TYPE。currentList就是一个List,size=1000。Fragment如下:public class PhotoPreviewFragment extends BaseFragment { private PictureModel pictureModel; private ImageView imageView; private List<Drawable> drawables; private TextView textView; public PhotoPreviewFragment(PictureModel pictureModel) { this.pictureModel = pictureModel; } public PictureModel getPictureModel() { return pictureModel; } @Override protected String getRootLayoutName() { return "photo_preview_fragment"; } @Override protected void initViews(View rootView) { // drawables = new ArrayList<Drawable>(); // drawables.add(resource.getDrawable("xc1")); // drawables.add(resource.getDrawable("xc2")); // drawables.add(resource.getDrawable("xc3")); imageView = (ImageView) findViewByName(rootView, "photo_preview_image"); // imageView.setBackgroundDrawable(drawables.get(pictureModel.getPosition() // % 3)); textView = (TextView) findViewByName(rootView, "photo_preview_text"); } @Override protected void initActions(View rootView) { imageView.setTag(pictureModel.getAbsolutePath()); loadImage(imageView); textView.setText(pictureModel.getAbsolutePath()); }} 有人能够帮我吗??? 求助! 芒果广告的奇怪问题,Eclipse报找不到AdMogoLayout类 Android绘图 如何只绘制图片某个矩形区域内的数据 service的onCreate方法,为什么被调用两次? 某个包下边的类找不到 求助:关于apk数据共享问题 android开发怎么管理不同的版本呢 如何使一个后台activity显示出来 Fence?android中的东西 你们有听说过吗?进来一起讨论下 显示不了安卓虚拟机的画面 ndk编译的是android.mk太大了,怎么解决啊 穿线测试理念介绍 1.0版
刚刚用Textview试了一下。没有问题。那应该和ImageView或者说和加载图片有关系了。可是加载图片的方式是测试过的,异步的,GridView3列,加载1000张大图都不会OOM,只是很卡,很慢而已,这也是不可避免的。 先不说滑来滑去的问题,就一直向后滑,黑屏问题。 你说的图片没有加载进去,要咋测试比较好,我准备debug到黑屏Fragment,看是否打印的图片地址。 本人菜鸟,感觉debug起来乱糟糟的。还是对ViewPager了解的不够。
刚刚用Textview试了一下。没有问题。那应该和ImageView或者说和加载图片有关系了。可是加载图片的方式是测试过的,异步的,GridView3列,加载1000张大图都不会OOM,只是很卡,很慢而已,这也是不可避免的。 先不说滑来滑去的问题,就一直向后滑,黑屏问题。 你说的图片没有加载进去,要咋测试比较好,我准备debug到黑屏Fragment,看是否打印的图片地址。 本人菜鸟,感觉debug起来乱糟糟的。还是对ViewPager了解的不够。
我在想如果textView都没问题的话,那就应该是加载问题,你这样,直接设置几张默认图片,不去异步加载新图试试。如果这样没问题那问题我估计就出在了异步加载图片上了。打印地址跟图片加没加进来没太大关系吧,还不如直接设置个图片加载完毕的标志符,Log输出这个标识符。
刚刚用Textview试了一下。没有问题。那应该和ImageView或者说和加载图片有关系了。可是加载图片的方式是测试过的,异步的,GridView3列,加载1000张大图都不会OOM,只是很卡,很慢而已,这也是不可避免的。 先不说滑来滑去的问题,就一直向后滑,黑屏问题。 你说的图片没有加载进去,要咋测试比较好,我准备debug到黑屏Fragment,看是否打印的图片地址。 本人菜鸟,感觉debug起来乱糟糟的。还是对ViewPager了解的不够。
我在想如果textView都没问题的话,那就应该是加载问题,你这样,直接设置几张默认图片,不去异步加载新图试试。如果这样没问题那问题我估计就出在了异步加载图片上了。打印地址跟图片加没加进来没太大关系吧,还不如直接设置个图片加载完毕的标志符,Log输出这个标识符。刚刚用的三张图片放在drawable文件夹下实验了一下。确实不会有问题。我在加载的工具类里,在bitmap加载成功后,打印succ标识,黑屏的Fragment也能打印。
private class PreviewFragmentAdapter extends FragmentStatePagerAdapter { public PreviewFragmentAdapter(FragmentManager fm) {
super(fm);
} @Override
public Fragment getItem(int position) {
Fragment fragment = null;
if (showType == NORMAL_TYPE && currentList != null && !currentList.isEmpty()) {
fragment = new PhotoPreviewFragment(currentList.get(position));
} else if (showType == APPOINT_TYPE && outerList != null && !outerList.isEmpty()) {
fragment = new PhotoPreviewFragment(outerList.get(position));
}
return fragment;
} @Override
public int getCount() {
int size = 0;
if (showType == NORMAL_TYPE && currentList != null) {
size = currentList.size();
} else if (showType == APPOINT_TYPE && outerList != null) {
size = outerList.size();
}
return size;
} @Override
public void destroyItem(View container, int position, Object object) {
super.destroyItem(container, position, object);
Log.e(TAG, "destroyItem1 position=" + position);
} @Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
Log.e(TAG, "destroyItem2 position=" + position);
} }
默认showType是NORMAL_TYPE。currentList就是一个List,size=1000。
Fragment如下:
public class PhotoPreviewFragment extends BaseFragment { private PictureModel pictureModel;
private ImageView imageView; private List<Drawable> drawables; private TextView textView; public PhotoPreviewFragment(PictureModel pictureModel) {
this.pictureModel = pictureModel;
} public PictureModel getPictureModel() {
return pictureModel;
} @Override
protected String getRootLayoutName() {
return "photo_preview_fragment";
} @Override
protected void initViews(View rootView) {
// drawables = new ArrayList<Drawable>();
// drawables.add(resource.getDrawable("xc1"));
// drawables.add(resource.getDrawable("xc2"));
// drawables.add(resource.getDrawable("xc3"));
imageView = (ImageView) findViewByName(rootView, "photo_preview_image");
// imageView.setBackgroundDrawable(drawables.get(pictureModel.getPosition()
// % 3));
textView = (TextView) findViewByName(rootView, "photo_preview_text");
} @Override
protected void initActions(View rootView) {
imageView.setTag(pictureModel.getAbsolutePath());
loadImage(imageView);
textView.setText(pictureModel.getAbsolutePath());
}
}