Android GridView Lag на прокрутке - PullRequest
       13

Android GridView Lag на прокрутке

1 голос
/ 02 августа 2011

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

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

Редактировать - вот какой-то код:

public View getView(int position, View convertView, ViewGroup parent) {
    T item = getItem(position);
    Box box = convertView == null ? new Box(mContext) : (Box) convertView;
    onBindModel(box, item);
    return box;
}

и

@Override
public void onBindModel(Box box, Model item) {
    box.param.putSerializable("model", item);
    box.setDescricao(item.getNome());
    box.getModelImageView().setImageResource(item.thumbResId);
}

Редактировать

Итак, как и предполагалось, только что попробовал этот код, но все же получить те же результаты:

@Override
public void onBindModel(final Box box, final Model item) {
    box.param.putSerializable("model", item);
    box.setDescricao(item.getNome());

    new Thread(){
        public void run() {
            Message msg = new Message();
            msg.obj =box.getModelImageView();
            msg.arg1 =item.thumbResId; 

            mHandler.sendMessage(msg);
        }
    }.start();
}

 private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message message) {
        Bitmap bm = BitmapFactory.decodeResource(getResources(),  message.arg1);
        setImage((ImageView) message.obj,bm);
    }
};

public void setImage(ImageView imgView, Bitmap bm) {
    imgView.setImageBitmap(bm);
}

При прокрутке на следующую строку у меня зависает, а потом просто продолжает нормально.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 02 августа 2011

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

Это не правда. Работа выполнена в потоке пользовательского интерфейса. Ссылаться на http://developer.android.com/reference/android/widget/ImageView.html#setImageResource(int)

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

0 голосов
/ 26 мая 2017

Старый вопрос, но он добился цели:

 Glide.with(context)
            .load(stickersData[position])
            .into(imageView);

Использование Glide

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