我正在我的应用程序中绘制一个自定义视图,该视图基本上将参数(XML)作为要显示的文本,然后继续无限旋转它。
当我进行这个控制时,我有一些疑问我想问:
我已经制作了 2 个样式属性,我已在attrs.xml
文件。这些属性是设置我的控件中使用的圆的宽度和宽度。我将在 ondraw 方法和 onmeasure 方法中使用这些值。我通过声明这些来运行我的程序,但出现一个错误,要求我输入android:width and android:height
属性。我的问题是,如果我已经使用自定义属性来定义视图的高度和宽度,为什么我需要这些
我正在 Mac 上编码。现在当我在做我的attrs.xml
文件,获取我们通常通过 ctrl+space 获取的自动完成列表没有显示。这是为什么。例如,我想知道我可以为自定义属性的格式属性赋予什么值,就像我在下面演示的那样:<attr name ="somename" format="value I wanted to find out through autocomplete">
。为什么不弹出自动完成功能?当我制作 .java 文件时,它确实会弹出。
In my ondraw()
我想画一个圆的方法。现在为此我需要圆心的坐标。所以我所做的就是输入 0, 0。但这不正确。我希望圆圈位于它所在的父视图的中心。因此,如果我的视图位于层次结构中,我希望它尊重这一点。我想给出相对于父视图的坐标。现在发生的事情是它被绘制在我屏幕的左上角。这就是我不想要的。我该怎么做才能实现这一目标?
如果我已经使用自定义属性来定义视图的高度和宽度,为什么还需要这些?
这是因为 Android 需要知道如何以及将视图放置在布局中的位置。您可以通过覆盖来实现视图以利用自定义高度/宽度要求View.onMeasure() http://developer.android.com/reference/android/view/View.html#onMeasure%28int,%20int%29返回您自己的尺寸参数。然后你可以设置android:layout_width="wrap_content" android:layout_height="wrap_content"
在你的布局文件中。
为什么不弹出自动完成功能?当我制作 .java 文件时,它确实会弹出。
Android xml 文件的自动完成和自动文档实现充其量是不稳定的,因此它不起作用也就不足为奇了。我不知道有修复,据我所知这是一个 IDE 错误。
在我的 ondraw() 方法中我想绘制
一个圆圈。现在为此我需要
的中心坐标
圆圈。所以我所做的就是输入 0, 0。但是
这是不正确的。我想要圈子
位于父视图的中心
所以如果我的观点是
我希望它尊重这一点。我
想要给出相对坐标
到父视图。发生了什么事
现在它正被绘制在
我屏幕的左上角。这
这是我不想要的。我该怎么做
达到这个目的吗?
如果您正确实现了 onMeasure(),则应该已经处理了相对于父级的坐标。要获得视图的中心,请使用以下代码:
void onDraw(Canvas canvas)
{
int centerX = this.getWidth() / 2;
int centerY = this.getHeight()) / 2;
//..draw code here
}
Edit
这是一个带有源代码的示例,应该会有所帮助:http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/ http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)