2012-04-01 19 views
0

クリックするところにキャンバスで絵を描きます。これはコードです:Android and drawing star picture

public class CanvasdrawActivity extends Activity implements OnTouchListener { 
    ImageView imageView; 
    Bitmap bitmap; 
    Bitmap bitmap2; 
    Canvas canvas; 
    Paint paint; 

    float downx = 0,downy = 0,upx = 0,upy = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    imageView = (ImageView) this.findViewById(R.id.imageView1); 
    Display currentDisplay = getWindowManager().getDefaultDisplay(); 
    float dw = currentDisplay.getWidth(); 
    float dh = currentDisplay.getHeight(); 

    bitmap = Bitmap.createBitmap((int) dw, (int) dh, 
     Bitmap.Config.ARGB_8888); 
    bitmap2=BitmapFactory.decodeResource(getResources(), 
      R.drawable.star_bez_nog); 

    canvas = new Canvas(bitmap); 

    imageView.setImageBitmap(bitmap); 
    imageView.setOnTouchListener(this); 
    } 

    public boolean onTouch(View v, MotionEvent event) { 
    int action = event.getAction(); 
    switch (action) { 
    case MotionEvent.ACTION_DOWN: 
     downx = event.getX(); 
     downy = event.getY(); 
     canvas.drawBitmap(bitmap2, downx, downy, null); 
     imageView.invalidate(); 
     break; 

    } 
    return true; 
    } 
} 

どのようにこの画像を1回だけ描​​くことができますか。私がffirstをクリックすると、星が描かれ、他の場所をクリックすると何も起こりません。ドローは最初のクリックだけで動作するはずです。

答えて

1

ブール値を設定します。

Canvas canvas; 
Paint paint; 
Boolean drawOnlyOnce = true; 

public boolean onTouch(View v, MotionEvent event) { 
... 
if (drawOnlyOnce) { 
    canvas.drawBitmap(bitmap2, downx, downy, null); 
    imageView.invalidate(); 
    drawOnlyOnce = false; 
} 
...