我已经删除了我的旧代码,因为它没有按我的预期工作。我试图在屏幕的某个部分使用ondraw画布功能,这样我的绘图周围仍然可以有按钮和其他文本。
***编辑***
我已经设法解决了这个问题。很多建议都是有帮助的,但我就是不能让它和我想要的一起工作。这可能是我最大的错,所以要感谢所有提供建议的人。我是这样解决这个问题的。
*一。首先在布局文件中定义一个视图。
<view
class="com.project.MainActivity.Drawing"
android:id="@+id/drawing_area"
android:layout_width="700dp"
android:layout_height="900dp"
android:layout_centerInParent="true"/>
*2.然后使用以下代码创建一个单独的Java类文件:
public class Drawing extends View {
Paint paint = new Paint();
public Drawing(Context context) {
super(context);
}
public Drawing(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//Draw Image Here//
}
*三。然后从主活动调用绘图:
public class MainActivity extends Activity {
private Drawing mDrawingArea;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.percentage_count_layout);
mDrawingArea = (Drawing)findViewById(R.id.drawing_area);
}
最佳答案
在视图类中,需要重写onMeasure()方法。这是您要求特定视图大小的地方。有一些关于这个主题的官方android教程,我将编辑这篇文章,一旦我在我的电脑与链接。
编辑:
看看这个Android article about creating custom components.。具体来看一下标题为“extend ondraw()和onmeasure()”的部分。引用:onMeasure()
更为复杂。onMeasure()
是一个关键
组件和它之间的呈现契约的一部分
集装箱。onMeasure()
应该被覆盖以高效和
准确报告所含零件的测量值。这是
由于
父级(传递给onMeasure()
方法)和
调用setMeasuredDimension()
方法的要求
计算后测量宽度和高度。如果你失败了
若要从重写的onMeasure()
方法调用此方法,则
测量时结果将是异常。
在本条中进一步说明:
组件的onMeasure()
方法应计算呈现组件所需的测量宽度和高度。它
应该尽量保持在传入的规范内,尽管
可以选择超过他们(在这种情况下,家长可以选择
做,包括剪辑、滚动、抛出异常或询问
要重试的onMeasure()
,可能使用不同的度量
规范)。
有一个customview示例可用作演示,但不幸的是,开发人员网站已经更改(更糟!)所以除了通过sdk管理器下载,它是不可用的。有关更多说明,请参见here页。
关于android - Android:定义onDraw Canvas 大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14485420/