これは簡単に思えますが、私はビットマップイメージを設定しようとしていますが、リソースから、アプリケーション内のdrawableフォルダにあります。
bm = BitmapFactory.decodeResource(null, R.id.image);
これは正しいです?
これをActivityクラスで呼び出しているとします。
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
最初のパラメータResourcesは必須です。通常はどのContext(およびActivityのようなサブクラス)でも取得できます。
これを試して
これはSDカードからです
ImageView image = (ImageView) findViewById(R.id.test_image);
Bitmap bMap = BitmapFactory.decodeFile("/sdcard/test2.png");
image.setImageBitmap(bMap);
これはリソースからです
Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
リソースが表示されていてビューである場合は、それを取り込むこともできます。スクリーンショットのように:
View rootView = ((View) findViewById(R.id.yourView)).getRootView();
rootView.setDrawingCacheEnabled(true);
rootView.layout(0, 0, rootView.getWidth(), rootView.getHeight());
rootView.buildDrawingCache();
Bitmap bm = Bitmap.createBitmap(rootView.getDrawingCache());
rootView.setDrawingCacheEnabled(false);
これは実際には全体のレイアウトをつかみますが、あなたは望むように変更することができます。
ビットマップオブジェクトを宣言していて、それを表示したい場合、またはこのビットマップオブジェクトを保存したい場合。ただし、最初に任意の画像を割り当てる必要があります。ボタンクリックイベントを使用することもできます。このコードでは、描画可能画像をビットマップオブジェクトに格納する方法についてのみ説明します。
Bitmap contact_pic = BitmapFactory.decodeResource(v.getContext().getResources(), R.drawable.Android_logo);
これで、このビットマップオブジェクトを使用することができます。保存するか、固定された緯度と経度で写真を描画しながらGoogleマップで使用するか、または他の場所で使用します。
私は自分のビューにビットマップを設定したいときに私はこの質問を見つけました。そのため、このコードの方が便利だと思いました。
myImgView.setImageDrawable(getResources().getDrawable(R.drawable.monkey));
から こちら
この行を置き換える
bm = BitmapFactory.decodeResource(null, R.id.image);
と
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.YourImageName);
私は、単にgetResources()でnull値を変更するということを意味します。もしあなたがこのコードをボタンまたはImage view clickイベントで使用する場合は、getResources()の前にgetApplicationContext()を追加するだけです。