0

我刚开始接触 Android(买了一本书,希望能解决大部分这些基本问题,但这只会在几周内到达)。我正在尝试制作一个占据活动窗口一部分的画布(否则为空白)。我想做的就是玩弄这个,看看较低级别的绘图像素和东西是如何工作的。后来我想看看我是否可以制作一个小型绘图程序。

基本上,我对如何在活动上创建画布并在其上绘制感到困惑。我试图拼凑一些可行的东西,它编译时没有错误,但没有做它应该做的事情。这是我的尝试:

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 编程基础的好书如下所示:http ://www.amazon.com/Android-Graphics-Canvas-API-ebook/dp/B00DKIAVK8/ref=sr_1_1?s=books&ie=UTF8&qid=1374432627&sr= 1-1&keywords=android+2d+图形

Yevgen Karpenko 的“使用 Canvas API 进行 Android 2D 图形编程”。它有很多简单的例子。

于 2013-07-21T19:02:10.887 回答