Java Glide在加载动画jpg时崩溃应用程序
所以,我使用Glide从imgur加载照片,代码如下Java Glide在加载动画jpg时崩溃应用程序,java,android,exception-handling,android-glide,Java,Android,Exception Handling,Android Glide,所以,我使用Glide从imgur加载照片,代码如下 try { ViewTarget viewTarget = new ViewTarget<SubsamplingScaleImageView, BitmapDrawable>(image_view) { @Override public void onResourceReady(BitmapDrawable bitmap, Transition<? super BitmapDrawab
try {
ViewTarget viewTarget = new ViewTarget<SubsamplingScaleImageView, BitmapDrawable>(image_view) {
@Override
public void onResourceReady(BitmapDrawable bitmap, Transition<? super BitmapDrawable> transition) {
this.view.setImage(ImageSource.bitmap(bitmap.getBitmap()));
}
};
GlideApp.with(this).load(post_to_show.getUrl()).into(viewTarget);
} catch (ClassCastException e){}
试试看{
ViewTarget ViewTarget=新ViewTarget(图像\视图){
@凌驾
public void onResourceReady(位图可绘制位图,转换您可以使用此代码显示gif
load=(ImageView) findViewById(R.id.loadimg);
GlideDrawableImageViewTarget imageViewTarget = new GlideDrawableImageViewTarget(load);
Glide.with(this).load(post_to_show.getUrl()).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageViewTarget);
请检查以下代码,可能会有帮助:
活动\u glide.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>
多亏了@Kaushal Gosaliya,我想出了一种方法来实现这一点,但GIF将仅显示为静态图像
ViewTarget viewTarget = new ViewTarget<SubsamplingScaleImageView, Drawable>(image_view) {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
Bitmap mutableBitmap = Bitmap.createBitmap(resource.getIntrinsicWidth(), resource.getIntrinsicHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(mutableBitmap);
resource.setBounds(0, 0, resource.getIntrinsicWidth(), resource.getIntrinsicHeight());
resource.draw(canvas);
this.view.setImage(ImageSource.bitmap(mutableBitmap));
}
};
ViewTarget ViewTarget=新的ViewTarget(图像视图){
@凌驾
公共资源就绪(@NonNull Drawable resource,@Nullable transition为什么它有.jpg即使它是gif.gif也受Glide支持我真的不知道,但它破坏了我的代码。我怎么能检测到它不是.jpg?加载这个我想你可以捕获异常,如果它是一个classcast异常,你可以用gif替换jpg并重新加载图像。我不能用catch例外。我认为这是致命的,因为它会使应用程序崩溃。我可以显示gif,但我必须知道加载它是一个gif,而不是gif。如果这两者都可以,那么我如何使用自定义视图来实现这一点?非常感谢。但是它会显示一个静态图像。如果您有一个将其视为gif的解决方案,我将不胜感激。实际上,现在它不加载图像,只加载GIF第一帧。@Khaledmara我添加了如何使用glide加载图像的代码,请检查。这可能有助于解决您的问题。我想您没有得到我想要的。我可以播放GIF并显示JPEG,问题是:我无法确定它是GIF还是JPEG。所以GIF伪装成JPEG我将使应用程序崩溃。如果我只使用你的第一个解决方案,图像将不会显示。如果我只使用你的第二个解决方案,动画GPEG将使应用程序崩溃。如果我错了,请纠正我。无论如何,非常感谢你的帮助,让我走上了解决问题的正确道路。一旦我的声誉允许,我将对此进行投票。
public class GlideActivity extends AppCompatActivity {
@BindView(R.id.imageView)ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_glide);
ButterKnife.bind(this);
gifImage();
}
public void gifImage() {
Glide.with(this).load("http://imagesourceteam.com/wp-content/uploads/2017/01/rr.jpg").into(imageView);
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>
ViewTarget viewTarget = new ViewTarget<SubsamplingScaleImageView, Drawable>(image_view) {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
Bitmap mutableBitmap = Bitmap.createBitmap(resource.getIntrinsicWidth(), resource.getIntrinsicHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(mutableBitmap);
resource.setBounds(0, 0, resource.getIntrinsicWidth(), resource.getIntrinsicHeight());
resource.draw(canvas);
this.view.setImage(ImageSource.bitmap(mutableBitmap));
}
};