我在我的应用程序中绘制一个自定义视图,它基本上将参数(XML)作为要显示的文本,然后继续无限地旋转它.
当我进行这种控制时,我有一些疑问,我想问一下:
我已经制作了两个我在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">.为什么自动完成没有弹出?当我制作a.java文件时会弹出它.
在我的ondraw()方法中,我想画一个圆圈.现在为此,我需要圆心的坐标.所以我做的是把0,0.但这不正确.我希望圆圈位于它所在的父视图的中心.所以如果我的视图在层次结构中,我希望它尊重它.我想给出相对于父视图的坐标.现在发生的事情是它被绘制在屏幕的左上角.这是我不想要的.我该怎么做才能做到这一点?
如果我已经使用自定义属性来定义视图的高度和宽度,为什么还需要这些?
这是因为Android需要知道如何以及在何处将视图放入布局中.您可以通过重写View.onMeasure()来返回自己的大小参数,从而实现视图以利用自定义高度/宽度要求.然后,您可以android:layout_width="wrap_content" android:layout_height="wrap_content"在布局文件中进行设置.
为什么自动完成没有弹出?当我制作a.java文件时会弹出它.
Android xml文件的自动完成和autodoc实现充其量是不稳定的,所以它不起作用并不奇怪.我不知道修复和AFAIK这是一个IDE错误.
在我的ondraw()方法中,我想画一个圆圈.现在为此,我需要圆心的坐标.所以我做的是把0,0.但这不正确.我希望圆圈位于它所在的父视图的中心.所以如果我的视图在层次结构中,我希望它尊重它.我想给出相对于父视图的坐标.现在发生的事情是它被绘制在屏幕的左上角.这是我不想要的.我该怎么做才能做到这一点?
如果您正确实现了onMeasure(),则应该已经处理了相对于父级的坐标.要获取视图的中心,请使用以下代码:
void onDraw(Canvas canvas)
{
int centerX = this.getWidth() / 2;
int centerY = this.getHeight()) / 2;
//..draw code here
}
编辑
 
这是一个源代码应该有用的示例:http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/
| 归档时间: | 
 | 
| 查看次数: | 737 次 | 
| 最近记录: |