无论如何,我可以从位图,URI,文件路径或图像的文件名称中找到资源ID吗?这些图像是由我的应用程序编写的。那么我是否有机会找到资源ID?从URI或位图获取资源ID
基本上,我有存储在我的SD卡(这是由我的应用程序创建)的GIF图像。我想将这些图像加载到我的查看器中。为此,我使用GIF Movie View library。在那个文件中,setMovieResource()
需要一个int(资源ID)。但是我拥有所有其他信息,如位图,绝对路径。
无论如何,我可以从位图,URI,文件路径或图像的文件名称中找到资源ID吗?这些图像是由我的应用程序编写的。那么我是否有机会找到资源ID?从URI或位图获取资源ID
基本上,我有存储在我的SD卡(这是由我的应用程序创建)的GIF图像。我想将这些图像加载到我的查看器中。为此,我使用GIF Movie View library。在那个文件中,setMovieResource()
需要一个int(资源ID)。但是我拥有所有其他信息,如位图,绝对路径。
资源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);
(上面的代码还没有测试)
所以基本上我都存储在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
@Achayan我已经更新了答案。请注意,我没有测试代码,但它应该给你这个想法。 – 2014-11-04 02:20:05
谢谢大家非常感谢 – Achayan 2014-11-04 05:25:43