通过以下代码,我有一些问题。
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView( new View(this) {
Paint mPaint = new Paint();
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
int width = this.getWidth();
int height = this.getHeight();
int radius = width > height ? height/2 : width/2;
int center_x = width/2;
int center_y = height/2;
// prepare a paint
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(5);
mPaint.setAntiAlias(true);
// draw a rectangle
mPaint.setColor(Color.BLUE);
mPaint.setStyle(Paint.Style.FILL); //fill the background with blue color
canvas.drawRect(center_x - radius, center_y - radius, center_x + radius, center_y + radius, mPaint);
// draw some text and rotation
mPaint.setTextSize(50);
mPaint.setTextAlign(Paint.Align.CENTER);
mPaint.setColor(Color.BLACK);
canvas.drawText( "Hello World" , center_x , center_y, mPaint);
}
});
}
}
Q1:如何在frame中填充蓝色? (字还是出现了)
问题 2:此应用中有多少 View 和表面?我如何在应用程序中计算这些?
Q3:这个应用有多少个窗口?
Q4:在代码中,我没有看到任何位图对象。 但是,我认为位图是我真正可以在上面画东西的对象。是我的 理解有误? 一种可能是 Canvas 构造函数在 new 时初始化位图。
Q5:我知道这些图形化的东西最终会浮出水面然后传递给 用于最终合成的 Surfaceflinger。它位于我的代码中的什么位置?
感谢任何回复。
最佳答案
五个问题。让我们看看我可以在哪些方面提供帮助。
Q1:告诉 Paint
填充矩形:paint.setStyle(Paint.Style.FILL);
问题 2:我只看到您以编程方式创建的一个 View 。为什么要统计观看次数?
Q3:再次:一个
问题 4:您通过用 Canvas
包装可变位图来绘制它们。实际绘制的方法是 Canvas
问题 5:您显示的代码是 Activity 的一部分。 Activity 由 Android 调用。这是您进入应用程序的入口点。
关于Android Canvas 填充背景色(Canvas应用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934875/