我有这个代码,我想做同样的事情,但花费更少的内存。有没有想过在我生成的300 ImageView
或类似的东西中设置图像加载器来解决这个问题?
DisplayMetrics lDisplayMetrics = getResources().getDisplayMetrics();
int widthPixels = lDisplayMetrics.widthPixels;
for (int getDrawables = 0; getDrawables < 300; getDrawables++)
{
final ImageView icoView = new ImageView(ImageEditor.this);
icoView.setImageResource(getResources().getIdentifier("icon_"+getDrawables, "drawable", getPackageName()));
icoView.setLayoutParams(new LinearLayout.LayoutParams(widthPixels/7,widthPixels/7));
gridlayout.addView(icoView);
int idGen = View.generateViewId();
icoView.setId(idGen);
icoView.setTag("icon_"+getDrawables);
gridlayout.setColumnCount(6);
}
答案 0 :(得分:2)
不要在布局中添加这么多ImageView。无论如何我们都不会立刻看到它们。使用管理视图回收的GridView或RecyclerView之类的内容。
答案 1 :(得分:0)
<强>解决方案:强>
添加new drawables
但分辨率较低,并在那里使用我的贴纸&#39;选择。使用GridView作为Recycler我只减少500MB的RAM使用量。
我看到的另一种方法是将drawable转换为位图,然后将调整大小设置为位图。