帆布在Java的Andr​​oid不拉丝 [英] canvas not drawing in java android

查看:116
本文介绍了帆布在Java的Andr​​oid不拉丝的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我觉得code是正确的,但我无法找到什么错。任何人都可以帮助请搞清楚什么是不正确的?

多数民众赞成在活动文档:

 包com.example.crazyeights;进口android.os.Bundle;
进口android.app.Activity;
进口android.view.Menu;公共类CrazyEightsActivity延伸活动{    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        MyView的观点=新的MyView的(本);
        的setContentView(视图);
    }    @覆盖
    公共布尔onCreateOptionsMenu(菜单菜单){
        //充气菜单;如果是present这增加了项目操作栏。
        。getMenuInflater()膨胀(R.menu.crazy_eights,菜单);
        返回true;
    }}

这就是我想要的屏幕显示:

 包com.example.crazyeights;
进口android.content.Context;
进口android.view.View;
进口android.graphics.Canvas;
进口android.graphics.Color;
进口android.graphics.Paint;公共类MyView的扩展视图{    私人涂料redPaint;
    私人诠释circleX;
    私人诠释circleY;
    私人浮动半径;    公共MyView的(上下文的背景下){
        超级(上下文);
        redPaint =新的油漆();
        redPaint.setAntiAlias​​(真);
        redPaint.setColor(Color.RED);
        circleX = 100;
        circleY = 100;
        半径= 30;
    }
    保护无效的OnDraw(帆布油画){
             canvas.drawCircle(circleX,circleY,半径redPaint);
    }
}


解决方案

您指定的大写的OnDraw()方法将不会被调用的方式。实际上,你需要重写的onDraw()方法,使用自定义视图时,例如:

  @覆盖
保护无效的onDraw(帆布油画){
    canvas.drawCircle(circleX,circleY,半径redPaint);
}

我测试了它,并绘制一个红色圆圈。请参阅自定义绘图 rel=\"nofollow\">这里,特别是替换文档的onDraw()部分。

I think the code is right, but I'm unable to find what's going wrong. Can anyone help please in figuring out what's incorrect ?

Thats the activity document:

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;
    }

}

thats what i want to display in the screen:

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);
    }
}

解决方案

The uppercase OnDraw() method you specified will not be called that way. You actually need to override the onDraw() method when using a custom view, e.g:

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

I tested it and that draws a red circle. See documentation on Custom Drawing here, specifically the Override onDraw() section.

这篇关于帆布在Java的Andr​​oid不拉丝的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆