我使用滑翔到一些图像加载异步到一些我的ImageView
S,我知道它能够处理图像像PNG
或者JPG
因为它可以处理SVG
.
事实是,据我所知,我加载这两种图像的方式不同.喜欢:
加载"正常"图像
Glide.with(mContext)
.load("URL")
.into(cardHolder.iv_card);
Run Code Online (Sandbox Code Playgroud)
加载SVG
GenericRequestBuilder<Uri, InputStream, SVG, PictureDrawable> requestBuilder = Glide.with(mContext)
.using(Glide.buildStreamModelLoader(Uri.class, mContext), InputStream.class)
.from(Uri.class)
.as(SVG.class)
.transcode(new SvgDrawableTranscoder(), PictureDrawable.class)
.sourceEncoder(new StreamEncoder())
.cacheDecoder(new FileToStreamDecoder<>(new SVGDecoder()))
.decoder(new SVGDecoder())
.listener(new SvgSoftwareLayerSetter<Uri>());
requestBuilder
.diskCacheStrategy(DiskCacheStrategy.NONE)
.load(Uri.parse("URL"))
.into(cardHolder.iv_card);
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用第一种方法加载SVG,它将无法工作.如果我尝试使用第二种方法加载PNG或JPG,它也无法正常工作.
是否有使用Glide加载两种图像类型的通用方法?
我从中获取这些图像的服务器在下载之前不会告诉我图像类型.它是一个REST服务器,资源将以类似的方式检索"http://foo.bar/resource"
.了解图像类型的唯一方法是读取HEAD响应.
嗨我使用Glide从我的drawable文件夹加载图像,一切正常,这是我的代码:
Glide.with(this).load(R.drawable.my_drawable_image_name).into(myImageView);
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法只是通过名称加载图像,如:
Glide.with(this).load(my_drawable_image_name).into(myImageView);
Run Code Online (Sandbox Code Playgroud)
因为我想动态获取图像名称,例如从数据库中获取...
你有什么建议吗?提前致谢.
是否有一种方法可以在下载图像时添加自定义标题以供请求?我可以在Glide中使用volley或okhttp.
我尝试在okhttpclient中向cookiemanager添加cookie,但它没有帮助.有没有一种方法可以在Glide中调试请求响应?
最好的问候汤姆
有没有办法使用Glide分配占位符但是将此图像保持原始比例?我有一个ImageView
可变大小(取决于传入的图像)我在调用之前设置Glide.with().load().into()
,我想使用占位符,但不希望占位符调整大小ImageView
,我希望它保持其原始尺寸.
到目前为止,我找不到办法做到这一点.
我正在创建一个应用程序,它应该显示一些图像Fragment
,其中大部分是从互联网上下载的.
我正在使用Glide来处理我在我的CardViews上的图像加载和我的图像滑块上的Fresco(这个问题在SO上解释了我为什么使用两个图像库).
的lib的壁画部分主要是基于这个叉子的AndroidImageSlider
.
重要提示:我正在尝试加载的图像可以是PNG
或SVG
.
更多信息:我正在使用运行Android 5.0.2 的Moto Maxx(国际版Droid Turbo).也发生在运行Android 4.4.2(cyanogen mod)的三星Galaxy S4上,但它的发生频率要低得多.
PS:我没有使用NDK.
有时,我的应用程序只是崩溃,无处不在,甚至没有任何用户交互.当它发生时,我在logcat上收到以下错误消息:
Fatal signal 7 (SIGBUS), code 2, fault addr 0x9a74c060 in tid 21894
Run Code Online (Sandbox Code Playgroud)
全栈:
04-07 07:59:08.110 21894 21894 F libc : Fatal signal 7 (SIGBUS), code 2, fault addr 0x9a74c060 in tid 21894 (asus.saitestore)
04-07 07:59:08.161 21946 21946 E Diag_Lib: …
Run Code Online (Sandbox Code Playgroud) 我试图使用滑动加载图像但不知何故我无法使用滑动加载图像.因为它显示以下错误:
无法找到GeneratedAppGlideModule.您应该在com.github.bumptech.glide中包含annotationProcessor编译依赖项:应用程序中的编译器和@GlideModule带注释的AppGlideModule实现或者LibraryGlideModules将被静默忽略.
我也提到了这个解决方案.但是,我已经有了更新的滑行版本.
在我的gradle中,我补充说
implementation 'com.github.bumptech.glide:glide:4.7.1'
Run Code Online (Sandbox Code Playgroud)
和
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
Run Code Online (Sandbox Code Playgroud)
码
XML
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".view.SettingActivity">
<data>
<variable
name="settingsViewModel"
type="com.sevenbits.android.mvvmsample.viewmodel.SettingsViewModel"/>
</data>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splash_bg">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/profile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@color/white"
android:elevation="10dp"
android:orientation="vertical"
android:padding="5dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_margin="10dp"
app:image_url="@{settingsViewModel.imageUrl}"
app:civ_border_width="2dp"
app:civ_border_color="@color/colorPrimary"/>
...
</LinearLayout>
</android.support.constraint.ConstraintLayout>
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
CustomBindingAdapter
public class CustomBindingAdapter {
@BindingAdapter({"bind:image_url"})
public static void loadImage(ImageView imageView, String url) {
RequestOptions requestOptions = new RequestOptions();
requestOptions=requestOptions.placeholder(R.drawable.boy_32);
Glide.with(imageView.getContext())
.load(url)
.apply(requestOptions) …
Run Code Online (Sandbox Code Playgroud) 使用Glide 4.10.0时出现错误
这是错误
java.lang.IllegalStateException: GeneratedAppGlideModuleImpl is implemented incorrectly. If you've manually implemented this class, remove your implementation. The Annotation processor will generate a correct implementation.
Run Code Online (Sandbox Code Playgroud) 我刚开始从Universal Image Loader转移到Glide.但是,当在recyclerview中再次向下滚动时,我收到大量的警告信息.
W/Bitmap: Called reconfigure on a bitmap that is in use! This may cause graphical corruption!
Run Code Online (Sandbox Code Playgroud)
如果我将Glide替换为另一个图像加载库,则警告消失.bindViewHolder中与图像相关的代码:
Glide.with(viewHolder.imageView.getContext())
.load(DisplayImageUtil.getImageUrl(item.getImageUrl(), 600))
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(viewHolder.imageView);
Run Code Online (Sandbox Code Playgroud)
在Nexus 5上测试过.
首先,Glide
和之间有什么区别GlideApp
?后者似乎是自动生成的,但步骤似乎很复杂,所以我使用了Glide.他们似乎都有相同的方法.
所以,我用过Glide.with(activity).load(fileName).error().into(imageView)
.问题是我无法理解传递给error()的内容.它没有采用可绘制的资源ID.Android Studio说参数是RequestBuilder <Drawable!> ?,但我找不到任何例子.
"错误:类型不匹配:推断类型是Int,但RequestBuilder <Drawable!>?是预期的"