無論如何,我可以從位圖,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