绘图&在android屏幕上创建画布

时间:2013-03-21 00:16:54

标签: java android bitmap android-canvas ondraw

代码将通过数组运行。如果在数组中看到字符“X”,它将在屏幕上的相应位置绘制。

问题是实际上没有在屏幕上绘制颜色。一些Android网站谈到了你如何需要画布,位图等等。

我的问题:我需要做些什么才能让drawRect方法的颜色实际显示在屏幕上?

package com.example.routedrawingtest;

import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Point;
import android.os.Bundle;
import android.view.Display;
import android.graphics.Paint;
import android.view.View;

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    float scale_x;
    float scale_y;

    public void main(String[] args){
        @SuppressWarnings("unused")
        Display display = getWindowManager().getDefaultDisplay();
        Point size = new Point();

        int screen_width = size.x;
        int screen_height = size.y;
        scale_x = screen_width/125;
        scale_y = screen_height/100;

    }

    public void onDraw(Canvas canvas) { 

        int i;
        Paint paint = new Paint();
        paint.setColor(Color.RED);
     paint.setStrokeWidth(10);
        int j;

        for (i=0; i<125; i++)
            for (j=0; j<100; j++)
                if (charMap[i][j]=='X')

                canvas.drawRect(i*scale_x, j*scale_y, scale_x,scale_y, paint);
    }

}

1 个答案:

答案 0 :(得分:0)

onDraw没有调用Activity方法来执行您想要的操作,您需要扩展类View并在那里实现该方法。在将视图添加到父级之前,如果您了解更多信息,则必须为其提供明确的大小,如fill_parent,否则它将不会显示在屏幕上。 例如:

    public class Drawer extends View
    {
        Paint paint =  new Paint();

         public Drawer()
         {
             paint.setStyle(Style.STROKE);
             paint.setStrokeColor(Color.BlUE);
             // etc...

         }

    public void onDraw(Canvas canvas)
    {
      for (i=0; i<125; i++)
        for (j=0; j<100; j++)
            if (charMap[i][j]=='X')

            canvas.drawRect(i*scale_x, j*scale_y, scale_x,scale_y, paint);
    } 

    }

通过XML或代码添加视图到代码,例如使用它的完全限定名称:

XML:          

     <com.example.comp.Drawer
      android:layout_width="fill_parent"<<<< specify a size
       etc...
     />