如何在Android中制作Canvas?

时间:2016-11-29 06:14:34

标签: android canvas

我不明白如何在android中制作画布。我看了很多教程,我认为我正确地遵循了它们,但我显然没有,因为它仍然无效。以下是我主要活动的代码:

package com.example.dan.shootyguy;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    public void neato(View view){
        Intent intent = new Intent(MainActivity.this, DrawThing.class);
    }
}

我认为这部分有效,但它并没有改变应用程序的外观,所以我无法确定。

然后,我有另一个类,我有画布和onDraw:

package com.example.dan.shootyguy;

import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Build;
import android.os.Bundle;
import android.view.View;

public class DrawThing extends View{

    Paint paint = new Paint(Color.RED);

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

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onDraw(Canvas canvas){
        super.onDraw(canvas);
        canvas.drawOval(25f,25f,25f,25f,paint);
    }

}

这应该是一个红圈,但它没有做任何事情。有人可以提供任何帮助吗?感谢。

2 个答案:

答案 0 :(得分:1)

查看(DrawThing)不能按意图调用 试试这个......

public class MainActivity extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
         DrawThing draw=new DrawThing(this);
            setContentView(draw);

        }


    }

答案 1 :(得分:0)

覆盖onDraw方法很好,你只是没有告诉它画任何东西。

  

drawOval

     

void drawOval(向左浮动,                   浮顶,                   向右漂,                   浮底,                   Paint paint)使用指定的paint绘制指定的椭圆。椭圆形将根据样式填充或框起   在油漆区。

你告诉它canvas.drawOval(25f,25f,25f,25f,paint);这是一个由25,25,25,25界定的椭圆,它的宽度为0,高度为0。换句话说,只是踢出去,不要画任何东西。也许是一个像素但是,这甚至是值得怀疑的。

你可以完全覆盖绘图程序并绘制东西。你只需告诉它可以绘制的东西。