【发布时间】:2016-01-05 23:43:59
【问题描述】:
我至少有 48 个小图像显示矢量图像,这些图像存储为可绘制的 XML 文件。我有一个包含 48 个项目的多选列表视图。当一个项目被选中时,我访问它的图像对应物并更改图像的色调。如果检查的项目少于(大约)30 个,则没有问题,但如果超过,则会显示 OutOfMemoryError。以下是代码示例:
View.OnClickListener listener= new View.OnClickListener() {
@Override
public void onClick(View v) {
SparseBooleanArray checked = listView.getCheckedItemPositions();
for (int i = 0; i < checked.size(); i++) {
// Item position in adapter
int position = checked.keyAt(i);
// Add sport if it is checked i.e.) == TRUE!
image = null;
if (checked.valueAt(i)) {
switch (position) {
case 1:
image = (ImageView) findViewById(R.id.image1);
image.setColorFilter(R.color.green);
break;
case 2:
image = (ImageView) findViewById(R.id.image2);
image.setColorFilter(R.color.green);
break;
case 3:
image = (ImageView) findViewById(R.id.image3);
image.setColorFilter(R.color.green);
break;
....
case:48
image = (ImageView) findViewById(R.id.image48);
image.setColorFilter(R.color.green);
break;
}
}
}
mybutton.OnClickListener(listener)
xml 文件中的图像示例
<RelativeLayout>
<ImageView
android:layout_width="400dp"
android:layout_height="400dp"
android:src="@drawable/img45"
android:id="@+id/image1"
/>
<ImageView
android:layout_width="400dp"
android:layout_height="400dp"
android:src="@drawable/img45"
android:id="@+id/image2"
/>
....
<ImageView
android:layout_width="400dp"
android:layout_height="400dp"
android:src="@drawable/img45"
android:id="@+id/image48"
/>
</RelativeLayout>
似乎这个问题在位图图像中很常见,但是前面问题中提出的解决方案不适合我的情况。您认为如果我将图像的 src 从 xml 矢量更改为简单的 png 会解决问题吗?如果没有,有什么建议吗?
【问题讨论】:
-
代码在那里:image.setColorFilter(R.color.green);
标签: java android out-of-memory android-image