2011-01-31 15 views
6

私は外部依存のJARライブラリを含むAndroid Appを持っています。この外部ライブラリには、アプリケーションの一部のImageViewに表示するpngビットマップが含まれています。Android ImageViewの画像をクラスパスから読み込む方法は?

私のアプリケーションのapkファイルを見ると、期待どおりにサブディレクトリ( "aq \ img")に画像があります。

ImageViewで画像を表示するには(クラスパスを洞察する)、最適な方法は何ですか。

私はこの

ImageView imgView01 = (ImageView) findViewById(R.id.imageView1); 
    Drawable d = Drawable.createFromPath("aq/img/sample.png"); 
    imgView01.setImageDrawable(d); 

この

InputStream is = ClassLoader 
      .getSystemResourceAsStream("sample.png"); 
    Bitmap bm = BitmapFactory.decodeStream(is); 
    imgView01.setImageBitmap(bm); 

を試してみましたが、それは(私は本当にそれがシンプルであることを期待していなかった)動作しませんでした。 イメージは空のままです。

ありがとうございました! Android上のシステムリソースが通常のファイルシステム内のファイルであるため、

よろしくクラウス

答えて

4

PNG画像は、「システムリソース」ではありません。必要な画像は、APKアーカイブ内にあります。 getSystemResourceAsStreamを使用して、APKアーカイブのバイトを読み取るのにInputStreamを開くことはできますが、ファイルを抽出するロジックを実装していない限り、アーカイブ内のファイルは読み取れません。

は単純にこれを使用する:

InputStream is = getClass().getClassLoader().getResourceAsStream("aq/img/sample.png"); 

EDIT:Android上で、getSystemResourceAsStreamに渡される名前はルート(/)へのファイルの相対パスとして扱われていること注意。 APKは/data/appに保存されているため、APKを読むためにInputStreamを開くにはClassLoader.getSystemResourceAsStream("data/app/PACKAGE-1.apk")を使用できます。ここで「パッケージ」はアプリのパッケージです。

関連する問題