Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 关于这个UI实现的建议?_Android_Xml_Layout_User Interface - Fatal编程技术网

Android 关于这个UI实现的建议?

Android 关于这个UI实现的建议?,android,xml,layout,user-interface,Android,Xml,Layout,User Interface,以下是我想要的基本UI: 有一个圆心:圆心。旋转视图时,将在圆周上生成新的圆:NAME。顶部的圆是新生成的圆,即,如果已生成的圆经过顶部,它将获取一个新名称 我还不太了解Android API,所以有人能给我指出正确的方向吗?我应该看什么课?我如何创建这种路径?我是以编程方式生成circle,还是在xml布局中已经有视图,但没有Invi 谢谢 编辑:目前我正在处理每个圆的自定义视图 我想你可以通过扩展来实现。我将首先查看它的源代码和它的一些继承者,看看他们是如何实现它们的 我认为,您所追求的

以下是我想要的基本UI:

有一个圆心:圆心。旋转视图时,将在圆周上生成新的圆:NAME。顶部的圆是新生成的圆,即,如果已生成的圆经过顶部,它将获取一个新名称

我还不太了解Android API,所以有人能给我指出正确的方向吗?我应该看什么课?我如何创建这种路径?我是以编程方式生成circle,还是在xml布局中已经有视图,但没有Invi

谢谢


编辑:目前我正在处理每个圆的自定义视图

我想你可以通过扩展来实现。我将首先查看它的源代码和它的一些继承者,看看他们是如何实现它们的

我认为,您所追求的功能与ListView或其他一些简单的适配器就绪视图小部件相差不远

主要的区别在于您的onDraw()方法,您需要重写它来为您绘制圆。无论您是以编程方式创建圆圈,还是以xml定义自己的视图,都将取决于您希望在视觉上显示的方式

我没有你想要的旋转效果的任何示例代码,但肯定可以用画布和一些几何体来完成

一旦您构建了AdapterView,您可能还需要对适配器进行子类化以保存您的名称,并重写其getView()方法以将名称填充到圆圈中


如果您从未实现过任何ViewGroup窗口小部件,我建议您从探索其中一些开始。ListView、GridView等。。了解如何将其与适配器和一些数据一起使用以创建动态布局。一旦你很好地理解了如何使用已经制造好的产品,那么就开始尝试解决你想要制造的产品。

你是否检查过苹果公司是否没有为该产品申请专利?不知道苹果公司做了这件事。我认为这很常见。如果有,链接?如果我的苹果厌恶scarcasm滴水的评论把你弄糊涂了,那我该怎么检查呢?对不起:)哦,这是供参考的链接。我想说的是不要在onDraw中自己画圆圈。只需使用它来放置每个视图。允许(从getView()函数)返回的视图为循环视图。这样您就有了一个更通用的AdapterView,它只是旋转视图。此外,中心视图实际上不需要附加到适配器视图。在你的布局中将它作为一个单独的视图,并且在两者之间有钩子,可能会更容易…嗨,我打算让圆圈成为自定义视图对象的原子。这会改变什么吗?不会,还是一样的@SalilPandit说得对。我认为您仍然需要使用onDraw()来获得旋转效果。嗯,某种属性animator和一些几何体可能也可以为您提供您想要的旋转效果。您可以使用动画,或者在AdapterView的onDraw中,您可以使用
canvas.rotate()函数,通过执行
canvas.rotate(currentDegree,…)旋转画布;currentDegree+=转速;如果(currentDegree>=360){currentDegree=0;}无效()我认为这应该创造一个无限旋转。。。然后你所要做的就是把视图放在一个圆圈里,就像平常一样。。。