首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基本画布用法android

基本画布用法android
EN

Stack Overflow用户
提问于 2013-06-12 09:31:06
回答 1查看 494关注 0票数 0

我刚刚开始使用Android (我买了一本书,希望能解决大多数这些基本问题,但这本书只会在几周内面世)。我正在尝试制作一个画布,它占据了活动窗口的一部分(否则是空白的)。我想要做的就是玩玩这个,看看底层的绘图像素是如何工作的。稍后我想看看我是否能做一个小的绘图程序。

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

代码语言:javascript
运行
复制
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就像它得到的一样基础:

代码语言:javascript
运行
复制
<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" >

我也很高兴对我的代码进行任何更正,以及我正在尝试做的事情的更正代码。我觉得我错过了一些重要的东西,但就是想不出是什么。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2013-07-22 03:02:11

您必须创建一个类来扩展视图并覆盖它的onDraw()方法。您还可以重写onSizeChanged()来确定视图的大小。

描述画布编程基础知识的好书如下所示: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+graphics

Yevgen Karpenko的"Android 2D Graphics programming with Canvas API“。它有很多简单的例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17056392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档