从URI或位图获取资源ID

时间:2014-11-03 08:18:32

标签: android uri android-resources android-file android-bitmap

无论如何,我可以从图像的位图,URI,文件路径或文件名中找到资源ID吗?这些图像是由我的应用程序编写的。那么我有没有机会找到资源ID?

基本上,我的SD卡中存有GIF图像(由我的应用程序创建)。我想将这些图像加载到我的查看器中。为此,我使用的是GIF Movie View library。在该文件中,setMovieResource()期望int(资源ID)。但我有其他所有信息,如位图,绝对路径。

1 个答案:

答案 0 :(得分:1)

Android仅为资源文件夹(/res)内的文件自动生成资源ID。在该文件夹中,没有称为“资源ID”的东西。

某些Android组件(例如View s)具有 ID,可以手动设置。但是,手动设置ID未列在R.java内,即Android生成的资源ID集合。

但是在你的情况下,生成的图像没有ID,所以不可能得到事先不存在的东西。


关于库,还有另一个函数可以从源设置图像而没有资源ID:

public void setMovie(Movie movie) {
    this.mMovie = movie;
    requestLayout();
}

现在,查看Android SDK中包含的Movie类,还有其他功能可以解码来源:decodeByteArray()decodeFile()decodeByteArray()接受一个字节数组,decodeFile()接受一个文件路径,如果你有文件的完整路径,可以使用它。

虽然Bitmap可以转换为字节数组,但我不确定Bitmap是否支持GIF图像的多个图层/动画,所以我将避免第一种方法。相反,你可以试试这个:

GifMovieView gifMovieView = ... ; // the reference to the view
String filePath = ... ; // the full file path to the GIF image

Movie myMovie = Movie.decodeFile(pathName);
gifMovieView.setMovie(myMovie);

(以上代码尚未测试)