Лучший способ отображения изображения в виде сетки — это плавная прокрутка.

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

1. загрузить изображение из Интернета в фоновом потоке

AsyncTask acyncTask ;
HandlerThread handlerThread ;

 URL imageUrl = new URL(link);<br>
            HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);
            conn.setInstanceFollowRedirects(true);
            InputStream is=conn.getInputStream();
            final Bitmap bitmap = BitmapFactory.decodeStream(is);

2. сделать растровое изображение до размера образца для сохранения память

final BitmapFactory.Options option = new BitmapFactory.Options();
    option.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(mFile.getPath(),
            option);
    option.inSampleSize = calculateInSampleSize(option, mSize, mSize);
    option.inJustDecodeBounds = false;
    option.inPurgeable = true ;
    option.inDither = false ;
    option.inScaled = false ;
    option.inPreferredConfig = Bitmap.Config.ARGB_8888;

3. сделать кэш для сохранения декодированного растрового изображения

LruCache lruCache = new LruCache<String, Bitmap>();

в baseadapter getView();Я буду lruCache.get(key)брать декодированное растровое изображение

4. ленивая загрузка, когда растровое изображение декодируется через обработчик

 Handler handler = new Handler();
        handler.post(new Runnable(){
           public void run(){
              imageView.setimageBitmap(bitmap);
          }
      });

Теперь я столкнулся с большой проблемой, оно все еще немного отстает при прокрутке у меня есть google о чем-то, что может улучшить прокрутку , не знаю, действительно ли что-то может улучшиться, или проблема возникает из-за того, что у меня есть проверка для каждого getView (), только потратьте меня на 2 ~6 мс , и он вызовет мой код для асинхронной загрузки рабочего потока формы изображения , поэтому я действительно не знаю, почему некоторые приложения могут загружаться очень плавно ? мой случай при прокрутке экран не будет выглядеть очень гладким, можно применить какое-то предложение?

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

вот код адаптера:

if (convertView == null) {
        convertView = layoutInflater.inflate(
                R.layout.row_display_image_grid, null);
        viewHolder = new DisplayImageGridViewHolder();
        viewHolder.background = (RelativeLayout) convertView
               .findViewById(R.id.background);
        viewHolder.image = (ImageView) convertView.findViewById(R.id.image);
        viewHolder.text = (TextView) convertView.findViewById(R.id.text);
        viewHolder.position = position;
        viewHolder.text.setEllipsize(TruncateAt.END);
        viewHolder.text.setTypeface(typeFace);
        viewHolder.image.setOnClickListener(this);
        viewHolder.image.setOnLongClickListener(this);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (DisplayImageGridViewHolder) convertView.getTag();
    }

viewHolder.position = position;
imageLoader.loadImage(imageLinkList.get(position), viewHolder.image);
return convertView;
5
задан rex 25 April 2012 в 09:30
поделиться