0
私が描くことができるSurfaceView
のキャンバスがあります。今、ボタンを押して、私はキャンバスを取るし、ビットマップを作る、底に表示されます。だから、ビットマップを作るために書かなければならないコードは何ですか?AndroidStudioでキャンバスをビットマップに変換する
public class Square extends Activity implements Runnable {
private SurfaceView surface;
private SurfaceHolder holder;
private boolean locker = true;
private Thread thread;
int tmp1 = 0, tmp2 = 0;
Background sfondo;
Canvas canvas;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surface = (SurfaceView) findViewById(R.id.mysurface);
surface.setFocusable(true);
holder = surface.getHolder();
sfondo = new Background((BitmapFactory.decodeResource(getResources(), R.drawable.sfondo)));
thread = new Thread(this);
thread.start();
}
@Override
public void run() {
while (locker) {
if (!holder.getSurface().isValid()) {
continue;
}
canvas = new Canvas();
canvas = holder.lockCanvas();
draw(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
private void draw(Canvas canvas) {
sfondo.draw(canvas);
tmp1 = (int)Math.random();
tmp2 = (int)Math.random();
canvas.drawCircle(tmp1, tmp2, 5, Color.BLACK);
}
}
}
で使用し、私は、このコードを追加することができますどこ? ?私は2つのメソッド "public void run(){..}"と "public void draw(Canvas canvas)"を持っています...あなたはこれを説明できますか? – LolloAAA
あなたのコードを投稿してくださいその後、 – Pongpat
@Override ます。public void実行(){ しばらく(ロッカー){ 場合{ 続ける(holder.getSurface()はisValid()!。); } AA = Bitmap.createBitmap(surface.getWidth()、surface.getHeight()、Bitmap.Config.ARGB_8888); キャンバス=新しいキャンバス(AA); canvas = holder.lockCanvas(); 描画(キャンバス); holder.unlockCanvasAndPost(canvas); } } プライベート空描画(キャンバスキャンバス){tmp1、tmp2 =(int)Math.random(...); canvas.drawCircle(tmp1、tmp2、gra、black); } – LolloAAA