Android glideのローカル画像のロードで発生した問題
12741 ワード
質問:ローカルの画像をロードしてずっとロードできなくて、どこが現れたのか分からない問題で、画像の命名の方式だと思って、試しても始まらないで、後ろにglideのソースコードを見てglideがローカルの画像をロードするのも使うような方法で、後ろに上家同事を聞いて、郭人、やっと最初の問題が画像の経路の問題であることを発見しました.
手順:
まず画像のパスをチェックします(絶対パスは書かないで!!):
私はImageViewをファジイで生成した画像をSDカードに保存し、他の場所で呼び出して表示します.
(一):画像の生成と保存
SDカードのパスを取得することが重要です.
生成されたピクチャパス:imagePath=/storage/emulated/0/1556246754134.jpg
(二)他の場所で展示する(glideを使う):
glideローカルSDカード画像をロードして表示します.
手順:
まず画像のパスをチェックします(絶対パスは書かないで!!):
私はImageViewをファジイで生成した画像をSDカードに保存し、他の場所で呼び出して表示します.
(一):画像の生成と保存
public static void viewSaveToImage(Context context, View view) {
view.setDrawingCacheEnabled(true);
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
view.setDrawingCacheBackgroundColor(Color.WHITE);
// View
Bitmap cachebmp = loadBitmapFromView(view);
FileOutputStream fos;
String imagePath = "";
try {
// SD
boolean isHasSDCard = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
if (isHasSDCard) {
// SD
File sdRoot = Environment.getExternalStorageDirectory();
String fileName = getSDPath() +"/" + Calendar.getInstance().getTimeInMillis()+".jpg";// name
File file = new File(fileName);
// File file = new File(sdRoot, "wuaisport/" + Calendar.getInstance().getTimeInMillis() + ".jpg");
Log.e(TAG, "viewSaveToImage filePath : " + file.getPath());
SPUtils.getInstance().put(Constants.SKIN_CONFIG_PIC_PATH, file.getAbsolutePath());
//
Uri uri = Uri.fromFile(file);
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
fos = new FileOutputStream(file);
imagePath = file.getAbsolutePath();
} else
throw new Exception(" !");
cachebmp.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
LogUtil.e("imagePath=" + imagePath);
view.destroyDrawingCache();
}
SDカードのパスを取得することが重要です.
public static String getSDPath() {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED);// sd
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory();//
}
return sdDir.toString();
}
生成されたピクチャパス:imagePath=/storage/emulated/0/1556246754134.jpg
(二)他の場所で展示する(glideを使う):
Glide.with(context).load(Uri.fromFile(new File(absPicPath))).into(ivCustomeBg);
glideローカルSDカード画像をロードして表示します.