Как сделать приложение более отзывчивым, использующим несколько растровых изображений?

Я новичок в Android, поэтому я не понимаю, как сделать приложение более отзывчивым, поскольку оно создает растровые изображения для каждой обработки и устанавливает для imageView. В основном я пытаюсь создать растровое изображение, поиграть с ним, как передача значений из seekBar, чтобы изменить его свойства и установить его в imageView. Как создать копию объекта растрового изображения, чтобы избежать ссылок. Любые предложения?? заранее спасибо

2 ответа

Решение

Вы можете попробовать эту библиотеку, которая очень эффективно обрабатывает растровые изображения.
https://github.com/thest1/LazyList Очень легко использовать эту библиотеку ленивых списков. Это делает работу кэширования растрового изображения автоматически:-

 ImageLoader imageLoader=new ImageLoader(context);
 imageLoader.DisplayImage(url, imageView);

НОТА:

  • Не забудьте добавить следующие разрешения в ваш AndroidManifest.xml:

      <uses-permission android:name="android.permission.INTERNET"/>
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    

  • Пожалуйста, создайте только один экземпляр ImageLoader и используйте его повторно в своем приложении. Таким образом, кэширование изображений будет намного более эффективным.

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

    Кроме того, не стоит загружать изображение 1024x768 пикселей в память, если оно в конечном итоге будет отображаться в виде эскиза 128x96 пикселей в ImageView. Вы должны загрузить уменьшенную версию изображения в память. Я также делюсь замечательным утилитарным классом для растрового изображения, который поможет вам уменьшить изображение в соответствии с размером:-

    BitmapUtil.java

    /**
    * Provides static functions to decode bitmaps at the optimal size
    */
    public class BitmapUtil {
    private BitmapUtil() {}
    
    /**
     * Returns Width or Height of the picture, depending on which size is smaller. Doesn't actually
     * decode the picture, so it is pretty efficient to run.
     */
    public static int getSmallerExtentFromBytes(byte[] bytes) {
        final BitmapFactory.Options options = new BitmapFactory.Options();
    
        // don't actually decode the picture, just return its bounds
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
    
        // test what the best sample size is
        return Math.min(options.outWidth, options.outHeight);
    }
    
    /**
     * Finds the optimal sampleSize for loading the picture
     * @param originalSmallerExtent Width or height of the picture, whichever is smaller
     * @param targetExtent Width or height of the target view, whichever is bigger.
     *
     * If either one of the parameters is 0 or smaller, no sampling is applied
     */
    public static int findOptimalSampleSize(int originalSmallerExtent, int targetExtent) {
        // If we don't know sizes, we can't do sampling.
        if (targetExtent < 1) return 1;
        if (originalSmallerExtent < 1) return 1;
    
        // test what the best sample size is
        int extent = originalSmallerExtent;
        int sampleSize = 1;
        while ((extent >> 1) >= targetExtent) {
            sampleSize <<= 1;
            extent >>= 1;
        }
    
        return sampleSize;
    }
    
    /**
     * Decodes the bitmap with the given sample size
     */
    public static Bitmap decodeBitmapFromBytes(byte[] bytes, int sampleSize) {
        final BitmapFactory.Options options;
        if (sampleSize <= 1) {
            options = null;
        } else {
            options = new BitmapFactory.Options();
            options.inSampleSize = sampleSize;
        }
        return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, options);
      }
      }
    

    Также Вы можете перейти по этой ссылке. Это поможет вам построить приложение.
    http://developer.android.com/training/displaying-bitmaps/index.html

  • Используйте классы Lazy loading и Image loader в android, чтобы установить изображение на imageView, чтобы оно выглядело более отзывчивым.

    Урок 1

    Урок 2

    Другие вопросы по тегам