Android assets 找不到文件异常 FileNotFo
2021-09-29 本文已影响0人
100个大西瓜
asset FileNotFoundException
使用assets加载文件时出现的了文件未找到:原因是乱加路径;
使用Glide来加载asetts资源作为背景图片时时,如下
public static final String PATH_HEAD = "file:///android_asset/";
private String mWallPaperPath;
private final SimpleTarget<Drawable> simpleTarget = new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, Transition<? super Drawable> transition) {
binding.main.setBackground(resource);
}
};
private void updateWallpaper(String s) {
if (TextUtils.equals(mWallPaperPath, s)) {
return;
}
mWallPaperPath = s;
Glide.with(requireContext())
.load(PATH_HEAD + s)
.into(simpleTarget);
}
后来使用了觉得这种方式加载出现了肉眼可见的延迟,
更换了其他方式,使用了
AssetManager ->InputStream->BitmapFactory->Bitmap->BitmapDrawable->View.setBackgroud(drawable)
来实现,但是中间在这里出现了错误
final AssetManager assets = context.getAssets();
final InputStream inputStream = assets.open(PATH_HEAD + wallPaperName);
出现了找不到文件的情况,问题在于使用了复制粘贴,在AssetManager 中不需要添加PATH_HEAD 这个东东,直接使用相对路径就可以了;
final AssetManager assets = context.getAssets();
final InputStream inputStream = assets.open(wallPaperName);
还是要减少复制粘贴来避免一些不好排查的问题