2013-03-21 74 views
0

代码将通过数组运行。如果在数组中看到字符'X',它将在屏幕上的相应位置绘制Rect。在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); 
    } 

} 
+0

问一个问题之前做一些研究。例如,ANDROID不是?使用主要方法........... – FutureSci 2013-07-16 05:10:47

回答

0

方法onDraw不被Activity叫做你想做什么,你需要扩展类查看和实现方法在那里。在将视图添加到父级之前,如果要了解更多信息,则必须给它一个明确的大小,如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... 
    />