1

我有这个代码:

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) 为空,这是什么原因?

4

4 回答 4

1

我遇到了同样的问题,对我来说,我试图从我之前保存到内部存储的文件中制作一个 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();

我仍然想知道只是逐字节保存文件,这样我就不必打开图像并重新压缩它。

于 2015-04-07T16:05:11.020 回答
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");  
    }


我希望这有助于并解决您的问题。

于 2013-10-02T05:44:36.627 回答
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()为我解决了这个问题。

希望这能有所帮助!

于 2013-10-15T20:37:44.190 回答
-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"/>
于 2013-10-02T05:32:11.250 回答