您的位置:

提高用户体验的安卓imageView图片加载方法

提高用户体验的安卓imageView图片加载方法

更新:

一、使用Glide库

在安卓开发中,图片加载是非常常见的需求,而使用Glide库可以轻松地实现高品质、流畅的图片加载,增强用户体验。

Glide库支持本地图片、网络图片、GIF图片等多种图片格式,同时还支持图像缩放、动画、转换等高级功能。

需要注意的是,在使用Glide库之前,需要先在build.gradle文件中添加Glide依赖:


dependencies {
    implementation 'com.github.bumptech.glide:glide:4.11.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}

接下来在代码中使用Glide加载图片:


Glide.with(this)
    .load("http://www.xxx.com/xxx.jpg")
    .placeholder(R.drawable.placeholder) // 占位图
    .error(R.drawable.error) // 错误图
    .into(imageView);

二、使用LruCache进行图片缓存

为了优化图片加载的性能,可以使用LruCache进行图片缓存,减少网络请求的次数。

LruCache是基于LRU(Least Recently Used)算法实现的一个缓存类,它可以按照缓存数据的使用频率来移除最近最少使用的数据对象。


// 初始化缓存
private LruCache
      mMemoryCache;
private void initCache() {
    final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
    final int cacheSize = maxMemory / 8; // 1/8作为缓存大小
    mMemoryCache = new LruCache
      (cacheSize) {
        @Override
        protected int sizeOf(String key, Bitmap bitmap) {
            return bitmap.getByteCount() / 1024;
        }
    };
}

// 存储缓存
private void addBitmapToMemoryCache(String key, Bitmap bitmap) {
    if (getBitmapFromMemoryCache(key) == null) {
        mMemoryCache.put(key, bitmap);
    }
}

// 读取缓存
private Bitmap getBitmapFromMemoryCache(String key) {
    return mMemoryCache.get(key);
}

      
     

使用缓存的方式:


Bitmap bitmap = getBitmapFromMemoryCache(url);
if (bitmap != null) {
    imageView.setImageBitmap(bitmap);
} else {
    Glide.with(MainActivity.this)
        .load(url)
        .placeholder(R.drawable.placeholder) // 占位图
        .error(R.drawable.error) // 错误图
        .listener(new RequestListener
     () {
            @Override
            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                return false;
            }

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                Bitmap bitmap = ((BitmapDrawable) resource).getBitmap();
                addBitmapToMemoryCache(url, bitmap); // 存储到缓存
                return false;
            }
        })
        .into(imageView);
}

     

三、使用RecyclerView进行图片列表展示

在实际开发中,经常需要实现图片列表的展示,而使用RecyclerView可以高效地展示大量图片,同时还可以实现下拉刷新、上拉加载等功能。

在RecyclerView中,可以使用GridLayoutManager来实现网格布局。

需要注意的是,在网格布局中,图片的宽度应该按比例调整,以避免图片变形。


RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2)); // 网格布局,2列
recyclerView.setAdapter(new RecyclerView.Adapter
     () {
    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        Glide.with(MainActivity.this)
            .load(urls[position % urls.length])
            .placeholder(R.drawable.placeholder) // 占位图
            .error(R.drawable.error) // 错误图
            .into(holder.imageView);
    }

    @Override
    public int getItemCount() {
        return 50;
    }
});

private static class MyViewHolder extends RecyclerView.ViewHolder {
    private ImageView imageView;

    MyViewHolder(View itemView) {
        super(itemView);
        imageView = itemView.findViewById(R.id.imageView);
        ViewGroup.LayoutParams lp = imageView.getLayoutParams();
        lp.width = getScreenWidth() / 2; // 调整宽度,保持比例
        lp.height = lp.width * 9 / 16;
        imageView.setLayoutParams(lp);
    }
}

private static int getScreenWidth() {
    WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Point point = new Point();
    windowManager.getDefaultDisplay().getSize(point);
    return point.x;
}

     
提高用户体验的安卓imageView图片加载方法

一、使用Glide库 在安卓开发中,图片加载是非常常见的需求,而使用Glide库可以轻松地实现高品质、流畅的图片加载,增强用户体验。 Glide库支持本地图片、网络图片、GIF图片等多种图片格式,同时

2023-12-08
提高用户体验,优化图片显示:Android图片缩放方案

一、Android图片资源 在Android中,图片资源通常放置在res/drawable目录下。图片资源存储在图片文件中,通常是在JPEG、PNG、GIF或者WebP格式中,这些图片文件的大小和分辨

2023-12-08
提高Android应用加载速度的方法

2023-05-14
提升用户体验,为Android应用添加图片预览功能

2023-05-14
提高应用性能:优化Android图片加载

一、选择正确的图片格式 在Android应用中,图片是占用较大内存的元素,不同的图片格式对内存的消耗也不同。因此,在使用图片时,选择正确的图片格式,对于优化应用程序的内存非常重要。 PNG、BMP、J

2023-12-08
提高Android用户体验的几个实用技巧

一、使用RecyclerView进行列表展示 在Android应用中,列表的展示是非常常见的功能,如展示新闻列表、商品列表、聊天记录、好友列表等。传统的方式是使用ListView组件进行展示,但是Li

2023-12-08
Android Splash: 详解安卓启动页

2023-05-18
提高Android Alpha版本软件性能及用户体验的方法

2023-05-14
为Android应用提高用户体验的几个技巧

一、使用高质量的图片 在Android应用中,图片是提升用户体验的重要元素。然而,大量且低质量的图片会降低应用的性能并增加用户等待时间。因此,建议使用高质量的图片,并对其进行压缩以减少应用加载时间。

2023-12-08
提高用户体验:Android应用界面时间的优化

2023-05-14
提高Android应用的用户体验的技巧

2023-05-14
Android Display:提高APP用户体验的关键

一、响应性 响应性是Android Display的重要方面之一。用户希望在使用APP时能够获得快速、平滑的用户体验。为此,开发人员需要确保APP的响应时间尽可能短并尽量减少阻塞用户界面的操作。 以下

2023-12-08
提高用户体验:为Android应用添加响应式设计

2023-05-14
提高安卓应用启动速度的秘诀

2023-05-14
提高Android应用程序的用户体验的方法

2023-05-14
Android App加速加载:使用WebP格式图片

2023-05-14
提高Android应用的用户体验:优化应用启动时间

2023-05-14
提高移动端用户体验的关键技术:Android 图片自适应缩放

2023-05-14
提高Android ImageView显示效果的技巧

ImageView是Android中常用的控件之一,在开发Android应用时经常需要使用该控件来显示图片。但是在使用ImageView时,如果没有注意一些细节,可能会导致图片显示效果不够理想,影响应

2023-12-08
提高Android应用页面性能的方法

2023-05-14