我的图表确实显示了android中的任何内容

时间:2013-12-29 05:56:39

标签: java android android-canvas

我做了一些代码,但仍然在路上完成整个图表。但此时我只想在模拟器中显示一个CIRCLE,只是为了确保我在正确的路径上。但是没有一个是now.the requestWindowFeature(Window.FEATURE_NO_TITLE);正在工作,但其余的不是。帮助我。

package com.Sabry.yesbmi;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.view.Window;

public class Chart extends Activity {

    Paint paint;

    @Override
    public void onCreate( Bundle savedInstanceState ) {

        super.onCreate( savedInstanceState );

        requestWindowFeature( Window.FEATURE_NO_TITLE );

        setContentView( R.layout.chart );

        initializeView();

    }

    private void initializeView() {

        paint = new Paint();
        paint.setColor( Color.BLACK );
        paint.setStrokeWidth( 2 );
        paint.setTextSize( 20 );
        paint.setStyle(Paint.Style.STROKE);

        setContentView( new Panel( this ) );

    }


    class Panel extends View {

         public Panel( Context context ) {
             super( context );
         }

    }

    public void onDraw( Canvas canvas ) {

         int originX = 10, originY = 800;
         canvas.drawColor( Color.WHITE );  // Background color
         canvas.drawCircle( 300, 80, 20, paint );

    }

}

1 个答案:

答案 0 :(得分:2)

我编辑了您的问题并格式化了代码。现在很明显你在Panel类之外有onDraw()。如您所知,它是您的活动的一种方法。

在这里,我删除了额外的括号。

class Panel extends View {

    public Panel( Conext context ) {
        super( context );
    }

    public void onDraw( Canvas canvas ) {
        int originX = 10, originY = 800;
        canvas.drawColor( Color.WHITE );  // Background color
        canvas.drawCircle( 300, 80, 20, paint );    
    }

}

使用@Override注释装饰重写方法并不是必需的,但这是一种很好的做法。如果你这样做了,编译器会给你一个错误,因为Acitivty没有onDraw方法。