我正在用glide显示服务器上的图像。我想显示一个圆形进度条作为占位符。我在使用glide加载图像时从进度条尝试了这种方法,但它不起作用。我错过了什么?
我正在展示活动中的回收视图。当用户单击onItem时,图像将在包含Viewpager的片段中打开。我正在用glide在viewpager中加载图像。
适配器类-
public class MyViewPagerAdapter extends PagerAdapter {
private ArrayList<Object> imagesList = new ArrayList<>();
public MyViewPagerAdapter(ArrayList<Object> images) {
this.imagesList = images;
}
@NonNull
@SuppressLint("ClickableViewAccessibility")
@Override
public Object instantiateItem(@NonNull final ViewGroup container, int position) {
Object recyclerViewItem = imagesList.get(position);
final View view = LayoutInflater.from(container.getContext()).inflate(R.layout.util_image_fullscreen_preview, container, false);
final TouchImageView imageViewPreview = view.findViewById(R.id.image_preview);
CircularProgressDrawable circularProgressDrawable =
new CircularProgressDrawable(container.getContext());
circularProgressDrawable.start();
Photos image = (Photos) imagesList.get(position);
GlideApp
.with(container.getContext())
.asBitmap()
.load(advertiser.getUrl())
.placeholder(circularProgressDrawable)
.fitCenter().diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageViewPreview);
container.addView(view);
return view;
}
@Override
public int getCount() {
return imagesList.size();
}
@Override
public boolean isViewFromObject(View view, Object obj) {
return view.equals(obj);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
试试这种方式,
在layout.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ProgressBar
android:id="@+id/progrss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
现在在加载图像的地方,
prgress = (ProgressBar)findViewById(R.id.progress);
progress.setVisibility(View.VISIBLE);
Glide.with(mContext)
.load(imageUrl)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
progress.setVisibility(View.GONE);
imageViewPriview.setImageDrawable(resource);
}
@Override
public void onLoadFailed(Exception e, Drawable errorDrawable) {
progress.setVisibility(View.GONE);
}
});
尝试此解决方案
在您的xml
. file中添加进度条
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ProgressBar
android:id="@+id/progress"
android:layout_width="match_parent"
android:layout_height="100dp"
android:visibility="visible" />
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="100dp" />
</RelativeLayout>
导入Glide gradle
compile 'com.github.bumptech.glide:glide:3.7.0'
然后
final ProgressBar progressBar = (ProgressBar)
findViewById(R.id.progress);
progressBar.setVisibility(View.VISIBLE);
Glide.with(contexthere).load(advertiser.getUrl())
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable glideDrawable, GlideAnimation<? super GlideDrawable> glideAnimation) {
progressBar.setVisibility(View.GONE);
imageViewPreview.setImageDrawable(glideDrawable);
}
});
注意:-传递正确的上下文即在片段类中使用getActive()并在活动类中使用ActivityName.this
在view pager中,您可以在实例化方法中使用以下方法。第一种方法用于加载gif图像,第二种方法用于使用进度条加载简单图像。
//// for loading gif images
RequestOptions requestOptions = new RequestOptions();
requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);
requestOptions.placeholder(R.drawable.itemes_bg);
requestOptions.error(R.drawable.itemes_bg);
Glide.with(context).applyDefaultRequestOptions(requestOptions).asGif().load(gifList.get(position)).listener(new RequestListener<GifDrawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) {
Toast.makeText(context, "No Internet Connection...", Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onResourceReady(GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {
return false;
}
}).into(holder.imageView);
//// for loading simple images
RequestOptions requestOptions = new RequestOptions();
requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);
requestOptions.placeholder(R.drawable.progress);
Glide.with(activity).applyDefaultRequestOptions(requestOptions).load(imageList.get(position).getImgUrl().trim()).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
progressBar.setVisibility(View.GONE);
Toast.makeText(activity, "No Internet Connection", Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
progressBar.setVisibility(View.GONE);
return false;
}
}).into(imageView);
CircleProgress 圆形进度条 内部实现 组件内部通过canvas实现,有更好的性能和通用性。 平台差异说明 App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序 √ √ √ √ √ √ √ 基本使用 通过percent设置当前的进度值,该值区间为0-100 通过active-color设置圆环的颜色,也可以直接设置type主题颜色,使用预置值 通过默认slot传入
本文向大家介绍Android带进度的圆形进度条,包括了Android带进度的圆形进度条的使用技巧和注意事项,需要的朋友参考一下 我们还是用一个小例子来看看自定义View和自定义属性的使用,带大家来自己定义一个带进度的圆形进度条,我们还是先看一下效果吧 从上面可以看出,我们可以自定义圆环的颜色,圆环进度的颜色,是否显示进度的百分比,进度百分比的颜色,以及进度是实心还是空心等等,这样子是不是很多元化很
Highcharts 测量图 以下实例演示了圆形进度条式测量图。 我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下其他的配置。 配置 chart.type 配置 配置 chart 的 type 为 'solidguage' 。chart.type 描述了图表类型。默认值为 "line"。 var chart = { type: 'solidguage' }
您好,我只想实现一个循环进度动画,直到图像从滑翔加载,但在占位符中实现动画后,它会将动画提供给每个单独的图像,并且图像会更改为占位符图像大小,这是我不想要的 我希望只有一个圆形进度动画在布局的中心,直到图像加载在回收器视图中 Post\u Item\u Container.xml Fragment\u Search.xml Search_Fragment.java
本文向大家介绍android自定义view制作圆形进度条效果,包括了android自定义view制作圆形进度条效果的使用技巧和注意事项,需要的朋友参考一下 还是我们自定View的那几个步骤: 1、自定义View的属性 2、在View的构造方法中获得我们自定义的属性 [ 3、重写onMesure ] 4、重写onDraw 1、自定义属性: 2、在View的构造方法中获得我们自定义的属性 3、直接重写
本文向大家介绍Android动态自定义圆形进度条,包括了Android动态自定义圆形进度条的使用技巧和注意事项,需要的朋友参考一下 效果图: A.绘制圆环,圆弧,文本 B.自定义属性的具体步骤 具体步骤: 1. 定义属性: 在values目录下创建attrs.xml 2. 在布局文件中引用当前应用的名称空间 3. 在自定义视图标签中使用自定义属性 4. 在自定义View类的构造方法中, 取出布局中