1

Я создаю приложение для Android для телевизора & Планшетные устройства, которые показывают рекламные объявления в виде изображений.Как сгладить большие растровые изображения сглаженно в Android

Я использую следующие method to loadBitmaps который я сохраненную в кэше, используя универсальный образ-загрузчик библиотеки:

public static Bitmap getSampledBitmapFromFile(File file, int reqWidth, int reqHeight) { 

    // First decode with inJustDecodeBounds=true to check dimensions 
    final BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(file.getPath(), options); 

    // Calculate inSampleSize 
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); 

    // Decode bitmap with inSampleSize set 
    options.inJustDecodeBounds = false; 
    return BitmapFactory.decodeFile(file.getPath(), options); 
} 

Это как нагрузка Bitmap:

for(int i ==0; i<media.size() ; i++){ 
new AsyncTask<String, Void, Bitmap>() { 
     private final WeakReference<ImageView> imageViewReference = new WeakReference<ImageView>(campaignImg); 
     // Decode image in background. 
     @Override 
     protected Bitmap doInBackground(String... params) { 
      return Config.getSampledBitmapFromFile(ImageLoader.getInstance().getDiskCache().get(params[0]), 
        mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels); 
     } 
     // Once complete, see if ImageView is still around and set bitmap. 
     @Override 
     protected void onPostExecute(Bitmap bitmap) { 
      if (bitmap != null) { 
       final ImageView imageView = imageViewReference.get(); 
       if (imageView != null) { 
        imageView.setImageBitmap(bitmap); 
        animateImages(imageView, media.interval); 
       } 
      } 
     } 
    }.execute(media.imageUrl); 
} 

Моя проблема заключается в приложение изображения вращение не является гладким, а изображения мерцают при изменении. Изображение меняется в течение 10 секунд. После того, что говорит мой логарифм:

D/dalvikvm: GC_FOR_ALLOC freed 11788K, 66% free 12375K/36295K, paused 19ms, total 19ms 
I/dalvikvm-heap: Grow heap (frag case) to 23.587MB for 12000016-byte allocation 
D/dalvikvm: GC_CONCURRENT freed 2K, 34% free 24091K/36295K, paused 12ms+5ms, total 43ms 
D/dalvikvm: WAIT_FOR_CONCURRENT_GC blocked 17ms 
D/dalvikvm: GC_FOR_ALLOC freed 5923K, 50% free 18241K/36295K, paused 59ms, total 60ms 
I/dalvikvm-heap: Grow heap (frag case) to 29.316MB for 12000016-byte allocation 
D/dalvikvm: GC_CONCURRENT freed 2K, 18% free 29957K/36295K, paused 13ms+6ms, total 50ms 
D/dalvikvm: WAIT_FOR_CONCURRENT_GC blocked 32ms 
D/dalvikvm: GC_FOR_ALLOC freed 11791K, 50% free 18241K/36295K, paused 22ms, total 22ms 
I/dalvikvm-heap: Grow heap (frag case) to 29.316MB for 12000016-byte allocation 
GC_FOR_ALLOC freed 2K, 18% free 29957K/36295K, paused 29ms, total 29ms 

Что еще я могу сделать, чтобы уменьшить использование памяти или улучшить производительность?

+0

Попробуйте это http://square.github.io/picasso/ – DKV

ответ

1

ответа Рая inspried мне использовать UIL для загрузки изображения из кэша. Думаю, мне следовало это сделать раньше.

В качестве учебного пособия всегда полезно использовать любую библиотеку для загрузки, кеширования или отображения изображений вместо ручной обработки. Поскольку я уже использовал UIL в своем проекте, я в конечном итоге использовал следующие данные:

1

Используйте библиотеки Picasso или Glide, чтобы избежать проблем с памятью.

Заменить путь с локальным путем к папке или сервер URL

Glide.with (context).load (path).asBitmap().into(imageView);