#android #android-recyclerview #android-bitmap #androidimageslider
#Android #android-recyclerview #android-bitmap #androidimageslider
Вопрос:
У меня есть RecyclerView
, и когда я нажимаю на элемент, он должен отображать imageSlider
с некоторыми изображениями (всего 2 или 3). Все работает нормально, но есть небольшая задержка при нажатии, что занимает 2 секунды, что очень раздражает? Как я могу это исправить?
Это код слайдера, который загружает изображения из массива растровых изображений:
public class ImageAdapter extends PagerAdapter {
private Context context;
private ArrayList<Bitmap> bitmaps;
public ImageAdapter(Context context, ArrayList<Bitmap> bitmaps) {
this.context = context;
this.bitmaps = bitmaps;
}
@Override
public int getCount() {
return bitmaps.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
return view == o;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((ImageView) object);
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
Glide.with(container)
.asBitmap()
.centerCrop()
.load(bitmaps.get(position))
.into(imageView);
container.addView(imageView,0);
return imageView;
}
}
Комментарии:
1. вы загружаете несколько изображений по щелчку. задержка нормальная. что вам следует сделать, так это уменьшить размеры растрового изображения. все, что вы можете сделать, чтобы ускорить время загрузки. Однако не загружайте их до щелчка, позвольте им загружаться после щелчка
2. @Shahin спасибо за ваш ответ. Как я могу уменьшить размеры растрового изображения?
3. Существует так много способов уменьшить растровое изображение. Вы можете использовать библиотеку Glide. Или вы можете использовать встроенные в Android инструменты для создания растровых изображений, о которых я расскажу в ответе для вас
Ответ №1:
Масштабирование растрового изображения:
Bitmap bitmap = Bitmap.createScaledBitmap(yourBitmap, 100, 100, false);
Bitmap bitmap = Bitmap.createBitmap(yourBitmap, width, height, Bitmap.Config.ARGB_8888);
Или с помощью Glide:
Glide.with(context).asBitmap().load(yourBitmap).apply(new RequestOptions().placeholder(placeHolderDrawable).error(errorDrawable).override(width, height)).into(yourImageView);