2011-11-16 21 views
5

Trong ví dụ của tôi khi tôi nhấn một nút, hình dạng được hiển thị nhưng khi tôi nhấn một nút khác, hình dạng trước đó sẽ bị xóa. Tôi muốn hình dạng vẫn tồn tại khi nhấn một nút khác . Tôi đang sử dụng phương pháp invalidate() sau mỗi hình được hiển thị. Bạn có thể vui lòng cho tôi một giải pháp được không? Dưới đây là Hoạt động tôi đã sử dụng.Đồ họa nên tồn tại khi nút khác trên hoạt động được nhấn

public class StartMyDrawView extends Activity{ 
    MyDrawView mydrawview; 
    public static int action=0; 
    Intent netIntent; 
    LinearLayout draw ; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Log.d("StartMyDrawView", "OnCreate()"); 
     setContentView(R.layout.designgraphic); 
     draw = (LinearLayout) findViewById(R.id.linearLayout1); 
     Button btnLine=(Button) findViewById(R.id.button1); 
     Button btnCircle=(Button) findViewById(R.id.button2); 
     Button btnRectangle=(Button) findViewById(R.id.button4); 
     Button btnText=(Button) findViewById(R.id.button5); 

     btnLine.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       action=1; 
       draw.invalidate(); 
      } 
     }); 

     btnCircle.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       action=2; 
       draw.invalidate(); 
      } 
     }); 

     btnRectangle.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       action=3; 
       draw.invalidate(); 
      } 
     }); 

     btnText.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       action=4; 
       draw.invalidate(); 
      } 
     }); 

     mydrawview =new MyDrawView(this); 
     draw.addView(mydrawview); 
    } 

}

và lớp của tôi mà kéo dài View là như sau

public class MyDrawView kéo dài Xem {

Paint paint = new Paint(); 
int actionVal=0; 
public MyDrawView(Context context) { 
    super(context); 
} 

public void onDraw(Canvas canvas) 
{ 
    super.onDraw(canvas); 
    paint.setColor(Color.RED); 
    paint.setStyle(Paint.Style.STROKE); 
    if(StartMyDrawView.action==1) 
     canvas.drawLine(0, 0, 200, 200, paint); 
    if(StartMyDrawView.action==2) 
     canvas.drawCircle(150, 150, 50, paint); 
    if(StartMyDrawView.action==3) 
     canvas.drawRect(20, 20, 150, 150, paint); 
    if(StartMyDrawView.action==4) 
     canvas.drawText("JUST DEMO", 150, 150, paint); 
} 

}

Trả lời

0

Tôi nghĩ rằng vải sẽ bị xóa mỗi time onDraw được gọi.

Một phương pháp giải quyết vấn đề là giữ lại trạng thái bằng cách thực hiện thao tác vẽ của bạn trên Bitmap chung và onDraw sẽ vẽ Bitmap vào Canvas. Điều này không hiệu quả lắm, và ví dụ, xem câu trả lời được chấp nhận here.

Chủ đề dành cho nhà phát triển Android về các sản phẩm có thể thu hút here.

Các vấn đề liên quan