0

私は Android を使い始めたばかりです (これらの基本的な質問のほとんどを解決できる本を購入しましたが、それは数週間以内に届きます)。アクティビティ ウィンドウの一部を占める Canvas を作成しようとしています (それ以外の場合は空白)。私がやりたいのは、これをいじって、低レベルの描画ピクセルやものがどのように機能するかを確認することだけです。後で、小さなプロット プログラムを作成できるかどうかを確認したいと思います。

基本的に、アクティビティにキャンバスを作成してその上に描画する方法について混乱しています。私は、エラーなしでコンパイルされますが、本来の動作を実行しない、実行可能なものをつなぎ合わせようとしました。これが私の試みです:

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;


public class Graph extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_graph);

    View curView = ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0); //should return a view without top bar...? http://stackoverflow.com/questions/4486034/get-root-view-from-current-activity

    Bitmap bitmap = Bitmap.createBitmap(400, 400, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    canvas.drawColor(0xffffffff);
    canvas.save();
    Paint paint = new Paint();
    paint.setDither(true);
    paint.setColor(0xFF0000FF); //blue hopefully
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeJoin(Paint.Join.ROUND);
    paint.setStrokeCap(Paint.Cap.ROUND);
    paint.setStrokeWidth(3);

    canvas.drawCircle(100, 100, 5, paint);
    curView.draw(canvas);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.graph, menu);
    return true;
    }

}

activity_graph.xml は、次のように基本的なものです。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Graph" >

私がやろうとしていることの修正されたコードとともに、私のコードも修正していただければ幸いです。ここで何か大きなものが欠けているように感じますが、何がわからないのですか。

前もって感謝します!

4

1 に答える 1

0

View を拡張し、その onDraw() メソッドをオーバーライドするクラスを作成する必要があります。onSizeChanged() をオーバーライドして、ビューのサイズを確認することもできます。

Canvas プログラミングの基本について説明している良書を以下に示します。 1-1&keywords=android+2d+graphics

Yevgen Karpenko による「Canvas API を使用した Android 2D グラフィックス プログラミング」。簡単な例がたくさんあります。

于 2013-07-21T19:02:10.887 に答える