2014-11-03 122 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