ImageView Android RAM - PullRequest
       0

ImageView Android RAM

2 голосов
/ 17 марта 2011

Продолжение моего оригинального вопроса .

Есть ли способ использовать ImageViews в приложениях для Android без использования большого количества оперативной памяти?

В исходном вопросе я обнаружил, что мое приложение использует много оперативной памяти, и обнаружил, что это были ImageViews, которые я использовал также для всей оперативной памяти.

Чтобы получить изображение, которое я использую

public void addPictureOnClick(View view){
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"),1);
    } 

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == 1) {
            // currImageURI is the global variable I'm using to hold the content:// URI of the image
            Uri currImageURI = data.getData();                
            image.setImageURI(currImageURI);
        }

Я хотел бы знать, есть ли другой способ показать картинки, а не URI?

1 Ответ

4 голосов
/ 17 марта 2011

Вы можете масштабировать свои изображения:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
imageViewFIeld.setImageBitmap(BitmapFactory.decodeByteArray(image, 0, image.length, options));

Процесс масштабирования может занять больше времени, если у вас большие изображения, но при этом загрузка памяти будет меньше на дисплее.

Редактировать: Больше васувеличьте значение inSampleSize, чем больше потребуется времени, тем меньше будет использования памяти.

Документация inSampleSize: если задано значение> 1, запрашивается декодер для выборки исходного изображения, возвращая меньшее изображениечтобы сохранить память.Размер выборки - это количество пикселей в любом измерении, которые соответствуют одному пикселю в декодированном растровом изображении.Например, inSampleSize == 4 возвращает изображение, которое составляет 1/4 ширины / высоты оригинала и 1/16 числа пикселей.Любое значение <= 1 обрабатывается так же, как и 1. Примечание: декодер будет пытаться выполнить этот запрос, но результирующее растровое изображение может иметь разные размеры, которые точно соответствуют тому, что было запрошено.Кроме того, степени 2 часто бывают быстрее / проще для декодера. </p>

http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html#inSampleSize

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...