如何从Drawable接收链接?

时间:2015-07-03 16:40:56

标签: java android android-layout

我有这样的功能:

 fromColorResAndUrl(@ColorRes int colorRes, String imageUrl)

现在我用这种方式打电话:

fromColorResAndUrl(R.color.blue,
                 "http://www.example.com/wallpaper.jpg");

您可以看到它使用外部图片链接。

我想使用本地图片链接。所以我将'wallpaper.jpg'保存在res/drawable

现在我想知道怎么把它放在函数中?

我尝试file:///android_asset/drawable/wallpaper.jpg但没有成功!

3 个答案:

答案 0 :(得分:0)

使用R.drawable.wallpaper,如Drawable Resources on Android Developers

所示

此外,如果您导入drawables,建议您为每个手机大小缩放它们。我建议使用android-drawable-importer-intellij-plugin,它非常快速且易于使用。

答案 1 :(得分:0)

file:///android_asset/...网址只能找到assets文件夹中的资源,因此如果您使用file:///android_asset/drawable/wallpaper.jpg,则必须将wallpaper.jpg放在assets/drawable/文件夹中,这不是drawables的默认位置。

答案 2 :(得分:0)

删除URL字符串,这样您只能拥有不带扩展名

的文件名
String fileName = "wallpaper"

然后获取int资源值:

int imgR = getResources().getIdentifier(fileName, "drawable", getPackageName());

然后使用getResources().getDrawable(imgR)获取您的图片。 作为ImageView的示例:

try {

    yourImageView.setImageDrawable(getResources().getDrawable(imgR)
    } catch (NotFoundException e) {
        int defaultR = getResources().getIdentifier(yourfallbackimg, "drawable", getPackageName())
        yourImageView.setImageDrawable(getResources().getDrawable(defaultR))
    }

如果您没有返回文件名,请使用try catch,这样您就可以使用默认图像而不是崩溃。

修改

检查http://pastebin.com/yN3zUciN