Android开发使用Glide获取图片背景色淡绿色解决办法

摘要:
在Android开发中,常用的加载图片工具有,Glide,Picasso,Fresco,其中Glide和Picasso使用方法极为相似,相对于Picasso来说,Glide加载图片更为迅速,内存占用更小等优点,但图像呈现和图像质量略逊一筹,而Fresco还未曾使用,对此不作评价。˃在Activity获取图片publicclassMainActivityextendsAppCompatActivity{privateImageViewmivTestImage;@OverrideprotectedvoidonCreate{super.onCreate;setContentView;mivTestImage=findViewById;Glide.with.load.into;//获取图片资源}}运行程序明显看到这张图片的底色和周围的白色不一样,有点淡青色这就坑了,淡绿色,,,,,明明是白底怎么变成了淡绿色以为是自己手贱加了底色,瞅瞅布局,没有添加底色,于是百度了一番。

在Android开发中,常用的加载图片工具有,Glide,Picasso,Fresco,其中Glide和Picasso使用方法极为相似,相对于Picasso来说,Glide加载图片更为迅速,内存占用更小等优点,但图像呈现和图像质量略逊一筹,而Fresco还未曾使用,对此不作评价。
首先集成Glide,因为项目用的是这个版本,所以就以此版本为例
如果想看最新版Glide,,,,,传送门
compile 'com.github.bumptech.glide:glide:3.7.0'
修改布局代码,增加一个ImageView用来显示图片
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/ivTestImage"
android:layout_width="100dp"
android:layout_height="100dp"/>
</RelativeLayout>
在Activity获取图片
public class MainActivity extends AppCompatActivity {
private ImageView mivTestImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mivTestImage=(ImageView) findViewById(R.id.ivTestImage);
Glide.with(this).load("你的图片地址").into(mivTestImage);//获取图片资源
}
}
运行程序
Android开发使用Glide获取图片背景色淡绿色解决办法第1张
明显看到这张图片的底色和周围的白色不一样,有点淡青色
(如图片未显示请检查AndroidManifest.xml文件中是否添加网络权限)
这就坑了,淡绿色,,,,,明明是白底怎么变成了淡绿色
以为是自己手贱加了底色,瞅瞅布局,没有添加底色,于是百度了一番。原来Glide默认的Bitmap格式是RGB_565,这也是导致在加载图片是可能变绿的罪魁祸首。RGB_565 代表8位RGB位图,而Picasso默认的Bitmap格式是ARGB_8888 代表32位RGB位图,位图位数越高代表其可以存储的颜色信息越多,图像也就越逼真,这也是Picasso图像质量更好的原因了
知道了原因也就可以动手改问题了,我们先新建一个类
public class GlideConfiguration implements GlideModule{
@Override
public void applyOptions(Context context, GlideBuilder builder) {
builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888); //修改Bitmap格式为ARGB_8888
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
然后在你的AndroidManifest.xml文件中注册改类
<meta-data
android:name="你的包名.GlideConfiguration"
android:value="GlideModule"/>
不要以为这样就万事大吉了,虽然这样能解决部分机型问题(魅蓝,魅族部分,小米,红米部分机型),但还有一部分机型未能解决,如荣耀8青春版…….
如何解决呢?很简单,在使用Glide缓存图片时,增加
diskCacheStrategy(DiskCacheStrategy.SOURCE)
//查有道翻译了一下,大概意思是将图片完整缓存
完整代码如下
public class MainActivity extends AppCompatActivity {
private ImageView mivTestImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mivTestImage=(ImageView) findViewById(R.id.ivTestImage);
Glide.with(this).load("你的图片地址").diskCacheStrategy(DiskCacheStrategy.SOURCE).into(mivTestImage);
}
}
运行程序就可以发现底色变成白色了,终于正常了。。。。
GitHub完整代码:https://github.com/cuiyongtao/TestGlide
————————————————
版权声明:本文为CSDN博主「cyt_victory」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34163551/article/details/78217582

免责声明:文章转载自《Android开发使用Glide获取图片背景色淡绿色解决办法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL慢日志功能分析及优化增强批处理实现自动删除过期文件的定期操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android源码分析(二)-----如何编译修改后的framework资源文件

一 : 编译framework资源文件 如果修改android framework资源文件,需要先编译资源文件,然后再编译framework才可以正常引用,进入项目目录 cd work/source/frameworks/base/core/res/ 执行mm 编译 framework-res.apk(原生或高通)编译完后com.android.inte...

【转】Android世界的Swift

最近Oracle又在和Google撕的厉害,才知道还有这么Kotlin在Android像Swift在Mac的地位一说。 Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以...

如何在Windows下搭建Android开发环境

Android SDK 2.2 开发环境搭建 (1) 安装必备。(以下为Android开发中必备的软件与工具)1.1 安装jdk。Android目前支持以下jdk版本:jdk1.5,jdk1.6如果未安装可以到官方下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html下载...

Android系统架构(图解)

下图是 Android 操作系统的架构,架构包括 4 层,由上到下依次是应用程序层、应用程序框架层、核心类库和 Linux 内核。其中,核心类库中包含系统库及 Android 运行环境。 图1  Android 操作系统的架构 应用程序层 Android 装配了一个核心应用程序集合,包括 E-mail 客户端、SMS 短消息程序、日历、地图、浏览器、联...

react-native常见错误整理

更多内容参见个人技术博客,无广告欢迎关注 1、CFBundleIdentifier", Does Not Exist sudo rm -rf node_modules && rm -rf ~/.rncache && yarn sudo npm install -g react-native-git-upgrade 2、B...

Android Activity 切换动画(非原创)

在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity增加了一个方法: public voidoverridePendingTransition(int enterAnim, int exitAnim) 其中:...