画像のzipファイルをダウンロードしてgetFilesDir()
で解凍するActivity
を持っています。パスは次のとおりです:
/data/user/0/packagename/files/files/example.png
しかし、これらの画像を読み込もうとすると、表示されません。次のコードを使用してパスを取得し、画像を読み込みます。
String loc = getFilesDir().getPath() + "/" + Config.IMAGES_LOCATION +"/";
String imageloc = loc + model.getThumbnail();
Glide.with(ActivityImageGallery.this).load(imageloc).into(image);
Imagelocのパスは保存場所と同じであり、そのパスからファイルを作成すると、存在することが示されます。
パスの前でfile://
を使用してみましたが、それも機能しません。 WRITE_EXTERNAL
ja READ_EXTERNAL
権限が要求され、付与されます。
これは私にとっては機能し、ファイルインスタンスを作成し、ロードするファイルのURIをImageView
に渡します
Glide.with(context)
.load(new File(fileUri.getPath())) // Uri of the picture
.into(profileAvatar);
追加したことを確認してください
<uses-permission Android:name="Android.permission.READ_EXTERNAL_STORAGE" />
RequestListener
を使用して、失敗した場合のエラーを追跡することもできます
new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
これを使ってグライドのロードリスナーを使ってみましたか
1.Debug:-
https://stackoverflow.com/a/42067675/5492047
Glide.with(getActivity())
.load(args.getString(IMAGE_TO_SHOW))
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
return false;
}
})
.into(imageFrame);
例外を確認しますか?
2。もう一度デバッグします。
任意のファイルエクスプローラーアプリを使用して、ファイルが読み込まれた正確な場所に移動してファイルを開くことができますか?.
3.Path
それは本当にパスの/ files/files /ですか?
4.Extensionファイルパスから.pngを削除して、ロードして確認できますか?
5。チュートリアル
すばらしいチュートリアルは、ここ https://futurestud.io/tutorials/glide-getting-started にあります。
これを試して
File c = new File(Environment.getExternalStorageDirectory() + "/data/user/0/packagename/files/files/example.png");
Glide.with(MainActivity.this).load(c).error(R.drawable.empty_pic).placeholder(R.drawable.empty_pic).into(image2);
またはこれを試してください
Glide.with(getActivity()).load(new File(" your path").toString())
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
Log.e("xmx1","Error "+e.toString());
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
Log.e("xmx1","no Error ");
return false;
}
})
.into(ivx);
内部ストレージを使用するには、ランタイム権限が必要です。次に、最新のグライドライブラリを使用して「com.github.bumptech.glide:glide:3.7.0」をコンパイルし、次のようにフォーマットします。
Glide.with(context).load(image path).into(Imageview);
最初に画像パスをキャプチャします。カメラから画像をキャプチャするか、ギャラリーから画像を選択します(私はすでに読み取りおよび書き込み権限を付与していると想定しています)。次にこれを試してください
_Glide.with(context).load(new File(imagePath)).dontAnimate().error(R.drawable.errorImage).placeholder(R.drawable.placeholderImage).into(imageView);
_
.dontAnimate()
を使用するのは、最初にロードしたとき(または余分な時間がかかったとき)にイメージがロードまたは表示されなかった可能性があるためです。それがお役に立てば幸いです。