Android 安卓-我想要。。。单击按钮后,在画布中绘制图像
我单击arenalayout.xml中的骰子按钮(此xml由“arenalayout”类显示)。但是canvas不画char 2我想。。。如果我点击骰子按钮,然后我画字符2 注意:在我点击骰子按钮后,竞技场类中“haveFirstDiced”变量的值变为TRUE。在“竞技场”课程中,昂德劳的身体内有状况。如果“haveFirstDiced”变量的值为真,则绘制字符2Android 安卓-我想要。。。单击按钮后,在画布中绘制图像,android,android-canvas,Android,Android Canvas,我单击arenalayout.xml中的骰子按钮(此xml由“arenalayout”类显示)。但是canvas不画char 2我想。。。如果我点击骰子按钮,然后我画字符2 注意:在我点击骰子按钮后,竞技场类中“haveFirstDiced”变量的值变为TRUE。在“竞技场”课程中,昂德劳的身体内有状况。如果“haveFirstDiced”变量的值为真,则绘制字符2 public class ArenaLayout extends Activity { private
public class ArenaLayout extends Activity {
private Arena arena;
ImageButton diceButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.arena_layout);
diceButton = (ImageButton) findViewById(R.id.dice);
dice();
}
private void dice() {
diceButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
arena.dicing();
}
});
}
}
这是“竞技场”课程:
public class Arena extends View{
private Paint p;
private Handler threadHandler = new Handler();
private Bitmap char1;
private float x = 20, y = 300;
Canvas c;
boolean haveFirstDiced = false;
public Arena(Context context, AttributeSet aSet) {
super(context, aSet);
p = new Paint();
}
public void dicing() {
new Thread(new XXX()).start();
}
@Override
synchronized public void onDraw(Canvas canvas) {
char2 = BitmapFactory.decodeResource(getResources(), R.drawable.char_2);
if(haveFirstDiced == true) {
canvas.drawBitmap(char2,x,y,null);
}
}
class XXX implements Runnable {
@Override
public void run() {
threadHandler.post(new Runnable() {
@Override
public void run() {
haveFirstDiced = true;
}
});
}
}
}
这是我见过的最复杂的解决方案。不需要同步线程、可运行线程或onDraw。以下是它应该是什么:
private void dice() {
diceButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
arena.dicing();
}
});
}
public class Arena extends View{
private Paint p;
private Handler threadHandler = new Handler();
private Bitmap char2;
private float x = 20, y = 300;
Canvas c;
boolean haveFirstDiced = false;
public Arena(Context context, AttributeSet aSet) {
super(context, aSet);
p = new Paint();
char2 = BitmapFactory.decodeResource(getResources(), R.drawable.char_2);
}
public void dicing() {
haveFirstDiced = true;
invalidate();
}
@Override
public void onDraw(Canvas canvas) {
if(haveFirstDiced == true) {
canvas.drawBitmap(char2,x,y,null);
}
}
}
若你们有一个在点击按钮后在画布上绘制图像的解决方案。请发帖!!