如何在Android自定义画布中制作圆形画面?

时间:2013-08-13 06:26:38

标签: android android-canvas android-drawable

我想让我的应用程序可以用户绘制圆圈。绘图非常简单 - 用户只需在画布上按某处然后按预定义的圆圈

这里的困难部分是绘制一些可绘制(图片)作为填充。它是关于矩形的很简单。然后你只需要写:

   Drawable drawable = getResources().getDrawable(R.drawable.my_background_picture);
   drawable.setBounds(myRectangle);
   drawable.draw(myCanvas);

所有内容都是在我的自定义视图的onDraw()方法中完成的。

不幸的是,没有这么简单的方法可以用圆圈来制作它。我发现的那个是对Vogella's tutorial的轻微修改:

    InputStream resource = getResources().openRawResource(R.drawable.sand);
    Bitmap bitmap = BitmapFactory.decodeStream(resource);

    BitmapShader shader;
    shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
    paint = new Paint();
    paint.setAntiAlias(true);
    paint.setShader(shader);

    myCanvas.drawRoundRect(myRectangle, 120, 120, paint);
乍一看它看起来不错,但事实并非如此。这个命令在下面的图片上做了类似框架的东西,所以你在图片上移动空心圆圈就是这样。不像实际移动矩形位图的矩形那样。

所以,我的问题是 - 有没有办法制作可以移动/调整大小的圆形画面?

1 个答案:

答案 0 :(得分:1)

为什么要画一个可画的?您可以通过canvas.drawCircle命令轻松绘制圆圈。您也可以通过Path对象轻松创建一个。

编辑:

如果您需要drawable,请尝试使用OvalShape制作ShapeDrawable。