0

이미지의 비트 맵, URI, 파일 경로 또는 파일 이름에서 리소스 ID를 찾을 수 있습니까? 이러한 이미지는 내 응용 프로그램에 의해 작성되었습니다. 자원 ID를 찾을 수있는 기회가 있습니까?URI 또는 ​​비트 맵에서 리소스 ID 가져 오기

기본적으로 GIF 이미지는 내 앱에서 만든 SD 카드에 저장되어 있습니다. 이미지를 내 뷰어에로드하려고합니다. 이를 위해 GIF Movie View library을 사용하고 있습니다. 해당 파일에서 setMovieResource()은 int (리소스 ID)를 예상합니다. 하지만 비트 맵, 절대 경로 같은 다른 모든 정보가 있습니다.

답변

1

리소스 ID는 리소스 폴더 (/res) 안의 파일에 대해서만 Android에서 자동 생성됩니다. 그 폴더에서 "리소스 ID"라는 것이 없습니다.

일부 Android 구성 요소 (예 : View) 에는 ID가 있으며 수동으로 설정할 수 있습니다. 그러나 수동으로 설정된 ID는 R.java 안에 포함되어 있지 않습니다. 이는 Android에서 생성 한 리소스 ID 모음입니다.

그러나 생성 된 이미지에는 ID가 없기 때문에 사전에 존재하지 않는 것을 얻는 것은 불가능합니다. 라이브러리에 관한


, 자원 ID없이 소스의 이미지를 설정하는 또 다른 기능이있다 : 안드로이드 SDK에 포함되어있는 Movie 클래스보고 지금

public void setMovie(Movie movie) { 
    this.mMovie = movie; 
    requestLayout(); 
} 

, 다른 기능이 있습니다 소스를 디코딩하려면 decodeByteArray()decodeFile(). decodeByteArray()은 바이트 배열을 허용하고 decodeFile()은 파일 경로를 허용합니다.이 경로는 파일의 전체 경로가있는 경우 사용할 수 있습니다.

Bitmap을 바이트 배열로 변환 할 수 있지만 Bitmap이 GIF 이미지의 다중 레이어/애니메이션을 지원하는지 여부는 확실하지 않으므로 첫 번째 방법은 피할 것입니다. 그래서 기본적으로 내가 (내 응용 프로그램에 의해 생성되는) GIF 내 sdcard에 저장이

+0

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); 

(위의 코드는 아직 테스트되지 않음) : 대신에, 당신이 시도 할 수 있습니다. 그 gif를 내 뷰어에로드하려고합니다. 이를 위해 저는 https://github.com/sbakhtiarov/gif-movie-view/blob/master/src/com/basv/gifmoviewview/widget/GifMovieView.java를 사용하고 있습니다. 그리고 setMovieResource는 int (resId)를 기대합니다. 하지만 비트 맵, 절대 경로 같은 다른 모든 정보가 있습니다. – Achayan

+0

@Achayan 답변을 업데이트했습니다. 코드를 테스트하지는 않았지만 아이디어를 제공해야합니다. –

+0

Thanks man much much – Achayan