无论如何,我可以从图像的位图,URI,文件路径或文件名中找到资源ID吗?这些图像是由我的应用程序编写的。那么我有没有机会找到资源ID?
基本上,我的SD卡中存有GIF图像(由我的应用程序创建)。我想将这些图像加载到我的查看器中。为此,我使用的是GIF Movie View library。在该文件中,setMovieResource()
期望int(资源ID)。但我有其他所有信息,如位图,绝对路径。
答案 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);
(以上代码尚未测试)