Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android画布填充背景色(画布应用程序)_Android_Android Canvas_Paint_Surfaceview - Fatal编程技术网

Android画布填充背景色(画布应用程序)

Android画布填充背景色(画布应用程序),android,android-canvas,paint,surfaceview,Android,Android Canvas,Paint,Surfaceview,通过以下代码,我有一些问题 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView( new View(this) { Paint mPaint = new Paint();

通过以下代码,我有一些问题

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);
         }
      });
    }
}

问题1:如何在框架中填充蓝色?(文字仍在出现)

问题2:此应用程序中有多少视图和曲面?我如何在应用程序中计算这些

问题3:此应用程序中有多少个窗口

在代码中,我没有看到任何位图对象。 然而,我认为位图是我真正可以在上面画东西的对象。是我的 理解不正确? 一种可能性是画布构造函数在位图更新时初始化位图

问题5:我知道这些图形最终会浮出水面,然后传递给用户 最终合成的表面抛光剂。它在我的代码中的位置是什么


谢谢你的回复。

五个问题。让我们看看我能帮上什么忙

Q1:告诉
Paint
填充矩形:
Paint.setStyle(Paint.Style.fill)

问题2:我只看到您以编程方式创建的一个视图。您为什么要计算视图

问题3:再一次:一个

问题4:通过使用
画布
包装可变位图,可以绘制可变位图。实际绘制的方法是画布的一部分


问题5:您显示的代码是活动的一部分。该活动由Android调用。它是您进入应用程序的入口点。

Q2:当您想计算应用程序中的视图数时,Hierarchy Viewer非常有用。
谢谢你的回答。我做了为标记答案编写代码的工作,它很有效

    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.

Q1:添加油漆后。设置样式(油漆。样式。填充);绘制矩形后,效果保持不变。我应该做些别的事情来让它工作吗(代码已经更改)问题2:我认为(1)白色背景是一个视图,蓝色画布是另一个视图。我计算这些是因为我想更清楚地了解Android中的一些术语。(表面、绘画、位图、视图、窗口……)Q3:在一个应用程序中是否可以创建多个窗口?如果是这样,你能给我举个简单的例子吗?一个活动是否意味着我只能在其中创建一个窗口?Q4:谢谢。现在这更干净了。Q5:所以Android对我创建的活动做了这些事情。谢谢你的回复。Q1:我刚刚想出了如何实现这一点。谢谢,谢谢。你知道如何计算一个应用程序中有多少个窗口吗?是否可以在一个应用程序中创建多个窗口?为什么要创建多个窗口?你在为平板电脑制作应用程序吗?威廉,我的目的是了解窗口在视图系统中扮演的角色。假设我们有位图、绘画、曲面、画布、视图和用于图形应用层的窗口。我很清楚只有其他窗口和视图会让我感到困惑。窗口意味着设备的屏幕,所以一个应用程序中只有一个窗口。我见过一款基于android系统的多窗口平板电脑,但实际上它不是多个窗口而是多个视图。这只是一个视图。白色背景是“活动”的默认样式。默认情况下,您创建的视图是透明的,并填充白色背景。画布填充视图,而不仅仅是蓝色区域。你在画布上画了一个蓝色的正方形,所以你认为蓝色区域就是画布,是吗?:)最后你在画布上画了一段文字。只有一个视图,您已经在它的画布上绘制了所有内容。Puffy,我使用了上面传递的代码,解决了更改画布颜色的问题,但是如果我已经有了一个图形,并且我更改了画布的颜色,它最终会与我的图形重叠,如何在不与已经完成的图形重叠的情况下更改颜色?