我在这里遇到了大麻烦。我需要在床上画一个洋娃娃(如在医疗床上),我似乎无法做到。我尝试创建自定义视图,然后我开始绘制。我使用了canvas.drawCircle
和canvas.drawRect
。我设法绘制这个玩偶,但我根据自定义视图的高度和宽度来确定它的大小,所以最后我无法设置角度。
然后,我尝试设置自定义xml属性(大小),然后包装其内容。但是wrap_content不起作用,它总是设置为全屏。所以我也不能使用它,因为我需要正确的头部位置来设置身体的其余部分。
我真正需要的是,绘制一些几何形状,然后单独操作它们。比如,用户选择移动腿部,然后当他按下向上按钮时,腿部将设置角度+1。我不知道这是否可以使用自定义视图,只有onDraw。我现在真的真的迷失了,拜托,至少有人指出我需要用来实现这一目标。
答案 0 :(得分:2)
最好的方法是使用RenderScript或OpenGL
它为您提供最佳性能但很难实现。 Here是很好的教程,详细介绍了5章。
答案 1 :(得分:1)
绘制到画布时,您可以对要绘制的形状执行各种转换。
因此,如果你想首先旋转整个玩偶,你应该在玩偶之前进行转换。然后你可以转换该转变中的每个身体部位。 例如,有一条腿的玩偶。
//save the canvas transformation state
canvas.save();
//first move the whole doll
canvas.translate(dollPosition.x,dollposition.y);
//we are now inside the coordinate system of the doll
//draw head (Position is now relative to the center of the doll position)
canvas.drawCircle(dollHeadPosition.x, dollHeadPosition.y, headRadius, paint);
//save the canvas to transform leg independently
canvas.save();
canvas.translate(legPosition.x,legPosition.y);
//draw leg
canvas.drawRect(...);
//restore the canvas to get back to your doll coordinate system
canvas.restore()
//restore canvas to get to global coordinate system
canvas.restore()
有各种变换,如旋转和倾斜等。只需使用自动完成功能就可以了解它们的编写方式。
(我希望缩进说清楚,它是如何工作的)