我有一个非常具体的组件要实现。我真的不知道怎么做。 该组件是一个带有光标的分段栏,可以选择任何段。段选择应更新栏中的段数。一个段可以有两个“状态”,用2个不同的图形表示。
IE:
这可能听起来像评级栏,但我真的不知道如何继续(新的java和Android)。 我应该使用评级栏,只是按段更改星标? 我应该延长RatingBar(如何?)?
任何帮助将不胜感激
答案 0 :(得分:2)
看起来你将不得不写自己的观点。不要担心 - 它并不那么困难(我在做Android 2天后没有任何汗水做了我的第一个)。基本上你有一个扩展View
的类,你重写onDraw
函数,它直接绘制到提供的Canvas
。确保您也覆盖了onMeasure
功能,否则您的视图将没有高度!
查看Building Custom Components上的Android页面 - 快速google或stack overflow搜索会为您提供有关如何继续操作的许多提示。
一旦你找到了如何编写自定义视图(从一个小型原型开始),那么你只需要这个特定控制器如何工作的逻辑。我可能有一个集合来保存每个细分,每个项目都是一个代表您数据的类。在onDraw
中,您只需要处理集合并绘制到屏幕上。
要触摸缩放,请覆盖onTouchEvent
方法,该方法会为您提供MotionEvent
对象,您可以调用getX()
和getY()
来返回坐标用户触摸您的视图的位置 - 从那里您可以计算出用户触摸的片段并处理缩放。
如果您需要更多帮助,请与我们联系。
答案 1 :(得分:1)
这看起来很难实现。
创建自定义视图,覆盖onDraw()并从那里开始;每个部分可能都是一个矩形,因为你知道有多少个部分,你可以将其除以部分的数量,并将它们绘制在正确的位置上。
覆盖ontouch并检查运动事件的点击位置,执行命中测试以确定单击哪个线段,然后将布尔缩放设置为true,使视图无效以便重绘并仅绘制缩放的线段。 / p>
您可能希望通过一个包含每个部分的状态的简单数组来支持它。