onCreateでプログラムでレイアウトを作成します。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
myView = new MyView(SketchActivity.this, layout.getWidth(), layout.getHeight());
layout2.addView(myView);
layout2.bringToFront();
}
}, 50);
(可変?)ビットマップを作成するビュー:
public MyView(Context c, int width, int height) {
super(c);
WindowManager wm = (WindowManager) c.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int w = display.getWidth(); // deprecated
int h = display.getHeight();
setFocusable(true);
setBackgroundResource(R.drawable.download);
// setting paint
mPaint = new Paint();
mPaint.setAlpha(0);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
mPaint.setAntiAlias(true);
// getting image from resources
Resources r = this.getContext().getResources();
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.smoke);
// converting image bitmap into mutable bitmap
bitmap = bm.createBitmap(w, h, Config.ARGB_8888);
mCanvas = new Canvas();
mCanvas.setBitmap(bitmap); // drawXY will result on that Bitmap
mCanvas.drawBitmap(bm, 0, 0, null);
}
私のonDraw関数:
@Override
protected void onDraw(Canvas canvas) {
mCanvas.drawCircle(x, y, r, mPaint);
canvas.drawBitmap(bitmap, 0, 0, null);
super.onDraw(canvas);
}
OnTouchEvent:
@Override
public boolean onTouchEvent(MotionEvent event) {
x = (int) event.getX();
y = (int) event.getY();
r = 20;
// Atlast invalidate canvas
invalidate();
return true;
}
LogCatエラーなし問題はmyViewにあります。ビットマップビットマップを作成するとき=bm.createBitmap(w、h、Config.ARGB_8888); w、h(画面の幅と高さ)の代わりに小さな数値を入力した場合例:bitmap = bm.createBitmap(20、20、Config.ARGB_8888); それは小さな絵を作ります。しかし、wとhを入力すると、すべてのレイアウトに描画するのではなく、小さな部分にしか描画しません。(試してみても:bitmap = bm.createBitmap(800、1080、Config.ARGB_8888);画面全体ではなく、小さな部分に描画されます。どうすればよいですか?