通过以下代码,我有一些问题。
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:如何在画面中填充蓝色? (单词仍然出现)
Q2:此应用中有多少视图和曲面?我如何在应用程序中统计这些?
问题3:此应用中有多少个窗口?
问题4:在代码中,我没有看到任何位图对象。 但是,我认为位图是我可以在其上绘制内容的对象。是我的 理解不对? 一种可能性是Canvas构造函数在新的时候初始化位图。
问:我知道这些图形的东西最终会浮出水面然后转移到 表面填料用于最终组合物。它在我的代码中的位置?感谢您的回复。
答案 0 :(得分:8)
五个问题。让我们看看我可以提供哪些帮助。
Q1:告诉Paint
填充矩形:paint.setStyle(Paint.Style.FILL);
Q2:我只看到您以编程方式创建的一个视图。你为什么要数这些观点呢?
Q3:再次:一个
问题4:您通过用Canvas
包装它们来绘制可变位图。实际绘制的方法是Canvas
问题5:您展示的代码是活动的一部分。该活动由Android调用。这是您进入App的入口点。
答案 1 :(得分:2)
感谢您的回答。我完成了为标记答案制作代码的工作,并且它有效。
Bitmap bg = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bg);
// paint background with the trick
Paint rect_paint = new Paint();
rect_paint.setStyle(Paint.Style.FILL);
rect_paint.setColor(Color.rgb(0, 0, 0));
rect_paint.setAlpha(0x80); // optional
canvas.drawRect(0, 0, width, height, rect_paint); // that's painting the whole canvas in the chosen color.
答案 2 :(得分:0)
Q2:当您想要计算应用中的观看次数时,层次结构查看器非常有用。 Optimizing Your UI