2013-12-12 60 views
2

我認爲代碼是正確的,但我無法找到發生了什麼問題。任何人都可以幫助確定什麼是不正確的?帆布沒有在Java中繪製android

多數民衆贊成在活動文檔:

package com.example.crazyeights; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class CrazyEightsActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     MyView view = new MyView(this); 
     setContentView(view); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.crazy_eights, menu); 
     return true; 
    } 

} 

這就是我理想中的屏幕顯示:

package com.example.crazyeights; 
import android.content.Context; 
import android.view.View; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 

public class MyView extends View{ 

    private Paint redPaint; 
    private int circleX; 
    private int circleY; 
    private float radius; 

    public MyView(Context context) { 
     super(context); 
     redPaint = new Paint(); 
     redPaint.setAntiAlias(true); 
     redPaint.setColor(Color.RED); 
     circleX = 100; 
     circleY = 100; 
     radius = 30; 
    } 
    protected void OnDraw(Canvas canvas){ 
      canvas.drawCircle(circleX, circleY, radius, redPaint); 
    } 
} 

回答

1

您指定的大寫的OnDraw()方法將不會被調用的方式。實際上,在使用自定義視圖時,您實際上需要覆蓋onDraw()方法,例如:

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.drawCircle(circleX, circleY, radius, redPaint); 
} 

我測試了它並繪製了一個紅色圓圈。請參閱自定義繪圖here上的文檔,特別是覆蓋onDraw()部分。

0

你試圖加入,在你的構造redPaint.setStyle(...) 例如:

redPaint.setStyle(Paint.Style.FILL) redpaint.setStyle(Paint.Style.STROKE) ;