椋梨ともうします。
始めて投稿します。
現在Androidのアプリを作成しています。
Bitmapに文字や直線を描画してImageVewで表示使用としています。
以下のソースはエミュレータでは動作するのですが、実機では動作しません。
Canvas canvas = new Canvas(bmp); でVMが落ちているようです。
実機にて動かしたいので、なにかアドバイスがあればお願いします。
やりたいことはボタンの画像に数字を上書きしてテンキーを作りたいのです。
テンキーそれぞれは独立したImageViewにします。
キーが10個ならImageViewが10個あるという感じです。
----------
public class CanvasTest extends Activity {
private ImageView mImageView01;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mImageView01 = (ImageView) findViewById(R.id.ImageView01);
//bmp
Resources r = getResources();
Bitmap bmp = BitmapFactory.decodeResource(r, R.drawable.panel_alp_2);
Canvas canvas = new Canvas(bmp);//←実機ではここで落ちている
Paint p = new Paint( Paint.ANTI_ALIAS_FLAG);
p.setTextSize(36);
p.setColor( Color.RED);
canvas.drawLine(0,0,100,100, p);
mImageView01.setImageBitmap(bmp);
}
}
----------
以上、よろしくお願いします。
--
/// 椋梨 健太郎 ///
ちょっと気になったのですが、敢えてビットマップで持たせる意味は何なんでしょう?
ためしにPNGフォーマットの画像で渡してもやはり落ちますか?
2010年10月5日13:34 kentarou mukunasi <mk.ana...@gmail.com>:
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>
こんにちは、返答ありがとうございます。
ビットマップというのは
>mImageView01.setImageBitmap(bmp);
で渡すためのbmpという意味でBitmapクラスを示しています。
画像ファイルは以下のようにPNGにしています。
/res/drawable-hdpi/panel_alp_2.png
こんにちは
こんにちは
椋梨です。
>Canvasにはimmutable(変更不可)なBitmapを渡したらいけないので、
をヒントに調べた結果copy()して使えばいいことがわかりました。
以下のように
Bitmap bmp2 = bmp1.copy(Bitmap.Config.ARGB_8888, true);
を入れるとうまくいきました。
ヒントありがとうございました。
----------
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mImageView01 = (ImageView) findViewById(R.id.ImageView01);
//bmp
Resources r = getResources();
Bitmap bmp1 = BitmapFactory.decodeResource(r, R.drawable.panel_alp_2);
Bitmap bmp2 = bmp1.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(bmp2);
Paint p = new Paint( Paint.ANTI_ALIAS_FLAG);
p.setTextSize(36);
p.setColor( Color.RED);
canvas.drawLine(0,0,100,100, p);
mImageView01.setImageBitmap(bmp2);
}
----------