我有这个问题 - 只是为了测试目的,我添加ParseFile到ParseObject收到列表中的一个.它不是仅显示在该行中,而是显示每4-5行,有时更多,有时更少.我认为回收视图与此有关.奇怪的是,其他数据(从这个例子中删除)适用于position变量.
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if(parseList.get(position).get("logo") != null){
ParseFile image = (ParseFile) parseList.get(position).get("logo");
String url = image.getUrl();
Glide.with(context)
.load(url)
.placeholder(R.drawable.piwo_48)
.transform(new CircleTransform(context))
.into(holder.imageView);
}
}
Run Code Online (Sandbox Code Playgroud) android parse-platform recycler-adapter android-recyclerview android-glide
我怎么能用Glide做到这一点?我想cache成像再次使用它.提前致谢.
我有一个图像内容byte []形式.但是当我通过Glide加载它们时,会显示破碎的图像.我正在做的事情如下所示.
Glide.with(context)
.load(imageByteArray)
.asBitmap()
.placeholder(R.drawable.ic_broken)
.into(rowImageView);
Run Code Online (Sandbox Code Playgroud)
imageByteArray成功转换为位图而不使用滑动.所以图像字节数组没有错.
请指导我,我错过了什么?
我也在使用Glide库com.github.bumptech.glide:glide:3.6.1和Android支持库com.android.support:support-v13:23.0.1
编辑
好的,这就是我正在做的事情.
String imageBytes = "HVao14fpmtHSev3OgsrQNsawkFzXNcY3BsfQla6..."
Run Code Online (Sandbox Code Playgroud)
上面定义的这个字符串是我从web API收到的实际图像的字节.
我正在将此String转换为像这样的字节数组
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
Run Code Online (Sandbox Code Playgroud)
比我将结果字节数组"imageByteArray"应用于上面定义的Glide代码.
是否有一种方法可以在下载图像时添加自定义标题以供请求?我可以在Glide中使用volley或okhttp.
我尝试在okhttpclient中向cookiemanager添加cookie,但它没有帮助.有没有一种方法可以在Glide中调试请求响应?
最好的问候汤姆
我刚开始从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上测试过.
我正在使用滑动来从URL加载图像.当我提取图像时,我在图像视图中显示了一个加载器.正在获取的某些图像较大,因此发生慢速Internet连接超时并引发异常
如何增加超时?
我得到一些包含一些食物菜单项的JSON数据
请注意:这只是一个示例,有时会有超过2个图像,阵列中还有更多菜单项!
{
"menu": [
{
"url": "/api/v1/menu/1",
"name": "Best Food",
"description": "really nice food",
"opening_time": "every day from 9am to 6pm",
"contact_email": "info@food.com",
"tel_number": "+54 911 3429 5762",
"website": "http://bestfood.com",
"images": [
{
"url": "https://blahblah/image1.jpg"
},
{
"url": "https://blahblah/image2.jpg"
}
]
},
]
}
Run Code Online (Sandbox Code Playgroud)
每个项目都有一些信息和一组图像URL.
我正在使用Glide图像库来处理这些图像,并使用Retrofit 2.0从端点下载JSON数据.一切都很顺利.
但是,我需要存储此下载的数据以供离线访问.
目前,我在现有模型上使用ORM Lite将所有JSON数据存储在数据库中.这部分还可以.
但是,在我的数据库中,我只存储图像URL,因为我被告知在数据库中存储图像(作为blob)不是好方法.
因此,我的应用程序中有一个部分可以查看已保存的菜单,如果用户选择,可以选择将其下载以供脱机访问.
此时值得一提的是,我已经在数据库中拥有原始菜单信息,因为用户必须首先查看菜单才能在DB中获取它.
但问题是图像.
这是我不知道如何进行的地方,但我列出了我正在考虑的解决方案和问题,并希望人们可以告诉我什么是最好的行动方案.
使用服务下载图像.我认为这是强制性的,因为我不知道将有多少图像,即使用户退出应用程序,我也希望继续下载
Glide有一个仅下载图像选项,您可以在此处和此处阅读其配置缓存所在的位置(内部私有或外部公共).问题是我对设置缓存大小感到不舒服,因为我不知道需要什么.我想设置无限.
我需要能够删除保存的菜单数据,特别是如果它保存在外部公共目录中,因为在删除应用程序时不会删除该菜单数据,或者如果用户选择从应用程序中删除已保存的菜单.我以为我可以将文件图像URI或整个保存菜单的位置存储在数据库中,但不确定这是否是一种好方法
我在不同的来源和答案中读到,在这个用例中只是将图像缓存到SD卡等,我应该专门使用网络库来避免将位图分配给堆内存.我目前在我的应用程序中使用OK HTTP.
我有Android Glide的问题.我试图快速交换我的图像,他们只是成为占位符大小,我的占位符图像是非常低的大小.那么我需要做什么?
也许我需要检查它是否已装载或其他东西,但我不知道如何.
Glide.with(this)
.load(quest.get(id).getImage())
.placeholder(R.drawable.load)
.fitCenter()
.crossFade()
.into(imageView);
Run Code Online (Sandbox Code Playgroud) 我知道同步加载来自设备存储的位图是不太实际的,但我真的必须这样做.我还没有想出办法.