我有这段代码:
String filePath = getActivity().getFileStreamPath("into11.png").getAbsolutePath();
if(Drawable.createFromPath(filePath)!=null){
img.setImageDrawable(Drawable.createFromPath(filePath));
}
else{
Log.d("nulllllllllllllllllllllllllllllllll","yessssssssssssssssssssssssssss");
}
文件路径正在获取图像“data / data /.../intro11.png”的正确路径,但Drawable.createFromPath(filePath)为空,这是什么原因?
答案 0 :(得分:0)
使用此代码:
File drawableFile = new File(getApplicationContext().getFilesDir().getAbsolutePath()+"/into11.png");
if(Drawable.createFromPath(drawableFile.getAbsolutePath())!=null){
img.setImageDrawable(Drawable.createFromPath(drawableFile.getAbsolutePath()));
}
else{
Log.d("nulllllllllllllllllllllllllllllllll","yessssssssssssssssssssssssssss");
}
我希望这有助于解决您的问题。
答案 1 :(得分:0)
用户moh.suhkni在原始问题中发表评论几乎为我完全解决了这个问题。
他发布了:
Uri uri = Uri.fromFile(filePath);
img.setImageURI(uri);
我最终需要的解决方案是:
final Uri uri = Uri.parse(url);
final String path = uri.getPath();
final Drawable drawable = Drawable.createFromPath(path);
img.setImageDrawable(drawable);
由于某种原因,这不起作用:
final Drawable drawable = Drawable.createFromPath(url);
// drawable ended up being null
img.setImageDrawable(drawable);
Android的Drawable.createFromPath()方法不能像我一样喜欢以file://
开头的路径。使用Uri.parse()为我解决了这个问题。
希望这可以提供帮助!
答案 2 :(得分:0)
我有同样的问题,对我来说,我试图从我之前保存到内部存储的文件中创建一个Drawable。我的问题最终是我的文件被错误保存,所以它没有创建drawable。它还在调试控制台中引发了错误。
我希望这有助于某人。
这是我保存的代码(注释掉的是我遗漏的内容):
URL url = new URL(remoteFile);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
Bitmap bm = BitmapFactory.decodeStream(is);
FileOutputStream fos = mainActivity.openFileOutput(filename,
Context.MODE_PRIVATE);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
// bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
byte[] byteArray = outStream.toByteArray();
fos.write(byteArray);
fos.close();
我仍然想知道只是逐字节保存文件,所以我不必打开图像并重新压缩它。
答案 3 :(得分:-1)
Drawable d = getResources().getDrawable(R.drawable.smiley);
在图片视图中显示
ImageView i = new ImageView(this);
i.setImageResource(R.drawable.smiley);
或在您的xml文件中
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/smiley"/>