关于三星I9003当我滚动视图时会产生图形噪音。可能是什么问题呢?
首先,我读取包含特定结构的XML文件,然后将该结构放入arrayList。
对于arrayList中的每个元素我都执行:
//这里有一个像5px * 10px的小图片
tr = new TableRow(this);
ImageView triangle = new ImageView(this);
params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
params.gravity = 0x11;
params.span = 8;
triangle.setBackgroundResource(R.drawable.complex_grey_down);
triangle.setLayoutParams(params);
tr.addView(triangle);
tl.addView(tr, params);
// here goes main title of the row
tr = new TableRow(this);
child = new TextView(this);
child.setText(sn.getName());
params = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
params.gravity = 0x11;
params.span = 8;
child.setTypeface(null, Typeface.BOLD);
child.setTextColor(res.getColor(R.color.text));
child.setLayoutParams(params);
tr.addView(child);
tl.addView(tr, params);
// here goes short note under the title
if (sn.getNote().length() > 0) {
tr = new TableRow(this);
child = new TextView(this);
child.setText(sn.getNote());
child.setTextSize(12);
child.setPadding(30, 5, 30, 10);
child.setTextColor(res.getColor(R.color.text));
child.setGravity(Gravity.CENTER);
params = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
params.gravity = 0x11;
params.span = 8;
child.setLayoutParams(params);
tr.addView(child);
}
tl.addView(tr, params);
}
添加10多行后,手机无法处理它。这种结构对某些手机来说太复杂了吗?并且使用表格布局和具有多个文本视图和少量图像视图的复杂行是正确解决此类内容的方法
我实现了sackOfViewsAdapter,但它没有帮助。在同一个三星手机应用程序无法正常工作。我注意到一件事,如果你在安装应用程序后第一次启动应用程序,一切正常,屏幕上没有滞后和图形'噪音',但是当应用程序被强制关闭并再次启动时,所有这些奇怪的事情都会发生
答案 0 :(得分:0)
正在使用表格布局和具有多个文本视图的复杂行以及少量图像视图是此类内容的正确解决方案
不,因为正如您所描述的那样,当列表变得太大时,您会同时向内存膨胀过多的视图。最终,如果您的列表足够大,任何设备都会因OutOfMemoryException
而崩溃。
实现此类滚动列表的正确模式是使用ListView
和自定义ListAdapter
。此模式在屏幕上滚动时回收视图,最大限度地减少内存使用,适配器的工作是提供在滚动到视图时填充每个视图所需的数据结构。