2014-11-03 125 views
0

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

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

回答

1

资源ID是Android自动生成的,用于资源文件夹(/res)内的文件。在那个文件夹之外,没有这种叫做“资源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); 

(上面的代码还没有测试)

+0

所以基本上我都存储在SD卡我的GIF(这是由我的应用程序创建)。我想将该gif加载到我的查看器中。为此我是uisng https://github.com/sbakhtiarov/gif-movie-view/blob/master/src/com/basv/gifmoviewview/widget/GifMovieView.java。并在该setMovieResource期待int(resId)。但是我拥有所有其他信息,如位图,绝对路径。 – Achayan 2014-11-03 18:24:38

+0

@Achayan我已经更新了答案。请注意,我没有测试代码,但它应该给你这个想法。 – 2014-11-04 02:20:05

+0

谢谢大家非常感谢 – Achayan 2014-11-04 05:25:43