2014-10-07 28 views
-1

如何改變其在畫布上創建圓的顏色,在細節中創建圈子的顏色:這裏在畫布上創建圈子是我的代碼如何改變其在畫布上

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(new SampleView(this)); 
} 

private static class SampleView extends View { 

    // CONSTRUCTOR 
    public SampleView(Context context) { 
     super(context); 
     setFocusable(true); 

    } 

    @Override 
    protected void onDraw(Canvas canvas) { 

     canvas.drawColor(Color.CYAN); 
     Paint p = new Paint(); 
     // smooths 
     p.setAntiAlias(true); 
     p.setColor(Color.RED); 
     p.setStyle(Paint.Style.STROKE); 
     p.setStrokeWidth(4.5f); 
     // opacity 
     //p.setAlpha(0x80); // 
     canvas.drawCircle(50, 50, 30, p); 
    } 

} 
} 

這裏附加此畫布的ImageView 。現在如何改變每個水龍頭上的這個圓的顏色,第一次敲我的意思是我想要紅色,第二次敲擊需要綠色,第三次敲擊回到正常狀態。這個怎麼做。

+0

變化'p.setColor(Color.RED);'到另一種顏色。即:'p.setColor(Color.GREEN);' – 2014-10-07 07:03:37

回答

1

您可以通過執行以下實現它:

- >具有可用於存儲您想要的顏色代碼

一個靜態變量(static int DESIRED_COLOR;) - >而不是修復,p.setColor(Color.RED);使用一些靜態變量像:p.setColor(DESIRED_COLOR);

- >上每一個接觸,根據您的要求,這樣的靜態變量(DESIRED_COLOR)的變化值:DESIRED_COLOR = Color.GREEN

+0

和調用invalidate()觸摸事件.... – Opiatefuchs 2014-10-07 07:20:42

1

請參閱下面的解決方案。

public class MainActivity extends Activity implements OnTouchListener{ 

SampleView mSampleView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mSampleView = new SampleView(this); 
    setContentView(mSampleView); 
    mSampleView.setOnTouchListener(this); 
} 

private static class SampleView extends View{ 

    public static int i = 0; 
    Paint p; 
    // CONSTRUCTOR 
    public SampleView(Context context) { 
     super(context); 
     setFocusable(true); 

     p = new Paint(); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 

     Log.i("i = ", "1"); 

     canvas.drawColor(Color.CYAN); 

     p.setAntiAlias(true); 
     if(i==0) 
     p.setColor(Color.RED); 
     else if (i==1) 
      p.setColor(Color.BLUE); 
     else 
      p.setColor(Color.GREEN); 

     p.setStyle(Paint.Style.FILL_AND_STROKE); 
     p.setStrokeWidth(4.5f); 
     canvas.drawCircle(500, 500, 100, p); 
    } 


} 

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    mSampleView.i=(mSampleView.i+1)%3; 
    v.invalidate(); 
    return false; 
} 

}

+0

,這裏如果我觸摸了一邊然後ARC顏色改變,如何應用觸摸僅弧? – Prabha1 2014-10-07 12:17:34

+0

您可以使用getX()和getY()命令獲取屏幕座標,並檢查它是否落在弧區域下方,然後可以更改顏色。只是一個「if()」條件。 – 2014-10-08 11:33:33

+0

我知道如何獲得屏幕尺寸,但沒有得到這個條件。 – Prabha1 2014-10-08 11:36:37