温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ImageView的加载进度显示

发布时间:2024-08-20 16:05:19 来源:亿速云 阅读:81 作者:小樊 栏目:移动开发

如果想在ImageView中加载图片时显示加载进度,可以使用ProgressDrawable来实现。ProgressDrawable是一个Drawable,它可以显示加载进度。以下是一个示例代码:

首先,创建一个ProgressDrawable类来实现加载进度的显示:

public class ProgressDrawable extends Drawable {
    private Paint paint = new Paint();
    private int progress = 0;

    public ProgressDrawable() {
        paint.setColor(Color.BLUE);
    }

    @Override
    public void draw(@NonNull Canvas canvas) {
        // 绘制进度条
        Rect bounds = getBounds();
        int width = (int) (bounds.width() * progress / 100f);
        canvas.drawRect(0, 0, width, bounds.height(), paint);
    }

    @Override
    public void setAlpha(int alpha) {
        paint.setAlpha(alpha);
    }

    @Override
    public void setColorFilter(ColorFilter colorFilter) {
        paint.setColorFilter(colorFilter);
    }

    @Override
    public int getOpacity() {
        return PixelFormat.OPAQUE;
    }

    public void setProgress(int progress) {
        this.progress = progress;
        invalidateSelf();
    }
}

然后,在加载图片时,通过设置ImageView的drawable为ProgressDrawable,并在加载图片时更新进度:

ImageView imageView = findViewById(R.id.imageView);
ProgressDrawable progressDrawable = new ProgressDrawable();
imageView.setImageDrawable(progressDrawable);

Glide.with(context)
    .load("your_image_url")
    .listener(new RequestListener<Drawable>() {
        @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) {
            // 图片加载完成,设置进度为100%
            progressDrawable.setProgress(100);
            return false;
        }
    })
    .into(imageView);

这样,在加载图片时,会在ImageView中显示一个蓝色的进度条,随着图片加载进度的增加而增长,直到图片加载完成。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI