代码将通过数组运行。如果在数组中看到字符“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);
}
}
答案 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...
/>