web-dev-qa-db-ja.com

Androidキャンバス塗りつぶしの背景色(Canvasアプリケーション)

次のコードを持っていることによって、私はいくつかの質問があります。

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

enter image description here

Q1:フレームの青色を塗りつぶすにはどうすればよいですか? (言葉はまだ表示されます)

Q2:このアプリにはいくつのビューとサーフェスがありますか?アプリでこれらをカウントするにはどうすればよいですか?

Q3:このアプリのウィンドウはいくつですか?

Q4:コードにビットマップオブジェクトがありません。しかし、ビットマップは本当に物を描くことができるオブジェクトだと思いました。私の理解は間違っていますか? 1つの可能性は、Canvasコンストラクターがビットマップが新しくなったときにビットマップを初期化することです。

Q5:これらのグラフィックは最終的に表面に出て、最終的な構成のために表面フリンガーに渡されることを私は知っていました。コードのどこにありますか?

返信ありがとうございます。

7
Sam

5つの質問。私がどこで助けることができるか見てみましょう。

Q1:Paintに長方形を埋めるように指示します:Paint.setStyle(Paint.Style.FILL);

Q2:プログラムで作成したビューが1つだけ表示されます。なぜあなたはビューを数えたいのですか?

Q3:もう一度:1つ

Q4:可変ビットマップをCanvasでラップして描画します。実際に描画する方法はCanvasの一部です

Q5:表示するコードはアクティビティの一部です。アクティビティはAndroidによって呼び出されます。これは、アプリへのエントリポイントです。

8
jboi

答えてくれてありがとう。私はマークされた答えのコードを作る仕事をしました、そしてそれは働きます。

    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.
3
Puffy

Q2:Hierarchy Viewerは、アプリのビュー数をカウントする場合に非常に便利です。 Iの最適化

0
Peter Zhao