2

別のプロジェクトをライブラリとして使用してAndroidプロジェクトを構築しています。ライブラリ プロジェクトでは、すべての作成方法を処理し、他のプロジェクトはそのライブラリを参照して、画像などの独自のリソースを含みます。

ライブラリ プロジェクトには imageView があります。私がやりたいのは、画像をライブラリ プロジェクトに渡してレンダリングすることですが、2 つのプロジェクトに独自のリソースがあるため、ID を渡すことはできません。子プロジェクトで Drawable を作成し、親プロジェクトに渡そうとしたところ、nullpointerexception が発生しました。

考えられるのはビットマップを渡すことですが、すべてのリソースが圧縮されており、使用できるのはプロジェクトフォルダー内の画像を使用してビットマップを作成する方法がわかりません

context.getResources()

リソースファイルを取得します。

または、これを行う他の方法はありますか?


アップデート:

申し訳ありませんが、NullPointerException は、呼び出す前に imageview を使用しようとしたためです。

super.onCreate();

例外はスローされず、実行できるようになりましたが、imageview はまだ画像を表示できません。私のコード:

ImageView imageview = (ImageView) findViewById(library.R.id.imageView1);
imageview.setImageResource(R.drawable.image);

解決

呼び出す前に、親クラスで imageview を使用しようとしたことがわかりました

super.onCreate()

画像が読み込まれない

setContentView()

親アクティビティのレイアウトをカバーします。

以下に示すメソッドを使用して、ビットマップまたはドローアブルをスーパー クラスのイメージ ビューに渡すことができます。

または、子クラスでイメージビューを作成してから、libraryPath.R を使用して親クラスでイメージビューを取得します。

4

5 に答える 5

2

これをActivityクラスで呼び出していると仮定します

bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);

最初のパラメータ Resources は必須です。これは通常、任意のコンテキスト (およびアクティビティなどのサブクラス) で取得できます。

于 2013-05-22T06:16:02.797 に答える
0

ライブラリ プロジェクトはいくつでも持つことができますが、アプリをコンパイルして実行すると、コードとリソースの単一の塊になります。ライブラリ プロジェクトの ImageView を持つクラスと、メイン プロジェクトのクラスを区別するものは何もありません。 ImageView。

この ImageView の場所を示すコードを投稿してください。それはどのクラスにあり、どのように使用していますか?

ImageView にアクセスしたら、次のいずれかの方法を使用できます。

setImageBitmap() :

ImageView.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.image));

setImageResource()

ImageView.setImageResource(R.drawable.image);

setImageDrawable()

ImageView.setImageDrawable(getResources().getDrawable(R.drawable.image));
于 2013-05-22T06:22:48.780 に答える
0

contextメイン プロジェクトの をメソッドのパラメーターとしてライブラリ プロジェクトに渡します。

コンテキストやリソースではなく、ビットマップをライブラリ プロジェクトに渡す方がよいと思います。

于 2013-05-22T06:20:33.343 に答える