我正在做一個簡單的鼓組應用程序,用戶可以點擊按鈕製作相應的聲音,並在畫布上隨機繪製一個圓圈。對於畫布,我創建了一個名爲CanvasView的自定義視圖,然後將該CanvasView實現到MainActivity中,這樣每次使用MainActivity中的OnClickListener單擊按鈕時,都可以控制該視圖。
但是,我不知道如何使用OnClickListener實際控制(畫一個圓圈)CanvasView。我需要這部分
幫助這是我在MainActivity類代碼:
Android:在自定義畫布上繪製圓形按鈕,點擊
public class MainActivity extends Activity {
//setup variables for soundpool
.
.
.
//implements CanvasView
CanvasView mCanvasView;
//set up soundID for each sound
.
.
.
//setup buttons
Button mKick;
.
.
.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set up soundpools
.
.
.
//example, the kick drum button
//kick drum
mKick = (Button) findViewById(R.id.kick);
mKick.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
soundPool.play(kick, leftVolume, rightVolume, priority, no_loop, normal_playback_rate);
// mCanvasView.draw(CanvasView.mCanvas);
}
});
這是我的代碼CanvasView
public class CanvasView extends View {
public Paint mPaint;
public static Canvas mCanvas;
//constructor
public CanvasView(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint();
}
//what I want to draw is here
protected void onDraw(Canvas canvas) {
mCanvas = canvas;
super.onDraw(mCanvas);
canvas.drawColor(Color.GRAY);
mPaint.setColor(Color.BLUE);
mPaint.setStyle(Style.STROKE);
mPaint.setAntiAlias(true);
canvas.drawCircle(30, 30, radius, mPaint);
這是我在MainActivity佈局XML
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/GridLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:columnCount="3"
android:orientation="horizontal"
android:rowCount="5"
tools:context=".GridXMLActivity" >
<Button
android:id="@+id/kick"
android:layout_width="78dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center_horizontal|fill_vertical"
android:layout_row="3"
android:text="Kick" />
<com.example.virtualdrumset.CanvasView
android:id="@+id/canvasView1"
android:layout_width="143dp"
android:layout_height="169dp"
android:layout_column="1"
android:layout_gravity="left|top"
android:layout_row="0" />
對於任何不便或錯誤,我深表歉意。這是我第一次提問。
我沒有正確理解你的問題。 「我不知道如何使用OnClickListener控制CanvasView(在一個圓上畫),你是什麼意思。每次點擊按鈕時你想繪製一個圓圈?像第二次點擊按鈕時畫第二個圓圈,點擊按鈕時第三次畫圓圈第三次? –
是的,我想要的是每次單擊按鈕時繪製一個圓形,但每次都會刷新一次。 – user3648721
查看我的回答 –