2011-02-09 2 views
1

Здесь я храню все пути изображения в базе данных. В TabHost, если я нажму кнопку FIND, все изображения должны быть отображены. В это время OutOfMemoryError подходит. Пожалуйста, помогите мне. Это очень важно для меня.Как я могу переработать ImageView с помощью пути изображения

Image s = pictures.get(i); 
    TableRow imageTableRow = new TableRow(ctx); 
    imageTableRow.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
    ImageView imageView = new ImageView(ctx); 
    Log.i("NEVERFORGET","PICTURE IMAGE PATH is : " + s.getimagePath()); 
    Drawable d = Drawable.createFromPath(s.getimagePath()); 
    imageView.setImageDrawable(d); 
    imageView.setId(i); 
    imageView.setLayoutParams(new TableRow.LayoutParams(100,100)); 
    imageView.setPadding(0, 10, 0, 15); 

ответ

1

Не используйте Drawable.createFromPath() как обязан загружать изображения на своем родном разрешении. Несомненно, это большие изображения, фотографии и т. Д., И поэтому потребуются огромные объемы памяти после распаковки и, следовательно, ошибки OOM. Даже если вы попросите их отобразить их в маленьком ящике, они, вероятно, будут иметь полный размер в памяти.

Вы должны использовать BitmapFactory.decodeFile() в сочетании с подходящим выбором для BitmapFactory.Options.inSampleSize.

+0

Спасибо, это очень полезно для меня – user672512

+0

Любой шанс вы могли бы отметить это как ответ тогда? Благодаря! :-) –

Смежные вопросы