2016-02-25 4 views
-1

Я написал этот код для работы на android. Он получает все изображения от android и помещает их в представление Grid. Когда я использую одни и те же изображения без масштабирования, это говорит о низком уровне памяти в памяти. когда я уменьшаю изображение, которое говорит, приложение прекратилось.Android Gallery App

This also says in the logcat (The application is doing too much work at its first activity.) 

Ошибка в этой строке

imageView.setLayoutParams(new GridView.LayoutParams(100,100)); 

ниже остальной код. Пожалуйста, помогите мне с этой проблемой или дайте мне хоть какую-нибудь идею сделать галерею так же, как андроид, встроенный в Галерею, который будет очень быстрым и сложным.

public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView = null; 
    if(convertView == null) 
    { 

     imageView = new ImageView(activity); 

     imageView.setLayoutParams(new GridView.LayoutParams(100,100)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(8,8,8,8); 
    } 
    else 
    { 
     imageView = (ImageView)convertView; 
    } 
    Bitmap bmp = BitmapFactory.decodeFile(filepath[position]); 
    imageView.setImageBitmap(bmp); 
    return imageView; 
} 
+0

Android-приложение для Android может загрузить миниатюру этих изображений, а не загружать исходное изображение. –

+0

@MidhunMP Я просматриваю всю FileSystem для сканирования файлов JPEG и PNG и загружаю их самостоятельно. Так что это определенно не загрузка эскизов. Есть некоторые проблемы, но я не могу понять это. Если вы могли бы помочь мне, пожалуйста, и вы можете дать мне несколько советов, чтобы сделать его еще лучше. Заранее спасибо. –

ответ

3

Не видя следа, сложно сказать, где ваше приложение тратит все свое время. Из его звуков вы конвертируете и настраиваете все изображения на MainThread, которые блокируют ваше приложение.

Я рекомендую использовать библиотеку, такую ​​как Glide, чтобы позаботиться о загрузке изображений в образы изображений для вас. Обязательно измените размер изображений. Вы будете в конечном итоге с чем-то вроде следующего

Glide 
    .with(myFragment) 
    .fromFile(fileName) 
    .centerCrop() 
    .into(myImageView) 

Другой альтернативой является Picasso, который очень похож на Glide.

+0

использует 75 МБ моей оперативной памяти. Прокрутка слишком медленная. Я запускаю его на Galaxy S4 i9505 GT. В чем может быть проблема? –

+0

@SalmanAli Я бы сказал, что отображается слишком много изображений, если вы анализируете свой кучи кучи, вы должны найти виновных. – keith

+0

Спасибо, я прочитал об асинхронных событиях и реализовал эту концепцию, и мое приложение работает отлично. Спасибо, спасибо большое. –