安卓:RoundRectShape:修改圆角半径(Android: RoundRectShape:

2019-06-26 07:43发布

我有一个RoundRectShape是在绘制ViewonDraw()函数。

该形状的角部通过在该视图中任何拖动操作通过一个重写改性onTouchEvent函数(它调用invalidate()来强制调用onDraw()

当初始化变量onDraw ,Eclipse将显示一个警告说, 在抽吸/布局操作避免对象分配(预分配和重用代替)。

这个问题解释如下:

你应该避免图纸或布局操作过程中分配对象。 这些被频繁调用,所以顺利UI可以通过该物体引起的分配垃圾收集暂停中断。

这通常是所处理的方法是将分配对象前面,并重新使用它们对于每个描绘操作

要做到这一点显然我必须能够修改圆角半径在构造函数中设置。 该RoundedRectShape类提供的setter(和我敢肯定相关的成员变量是不可访问)。

我知道这是一个小物件和一个小问题,但我怎么可以改变这些角不重新初始化对象时,类为设定圆角半径的唯一方法是通过构造?

或者这只是其中做的最好的事情将要与做什么是可能被替换的情况下?

谢谢,

PS调用构造中onTouchEvent()方法将删除警告,但实现绝对没有因事实上onDraw()被调用,通过每一次invalidate()反正

Answer 1:

我觉得你不需要使用RoundRectShape可言。 RoundRectShape是不可变的如此改变其值的唯一方法是使用反射。 您可以轻松地通过调用完成同样的drawnings Canvas.drawRoundRect(RectF rect, float rx, float ry, Paint paint)直接方法,无需使用RoundRectShape 。 或者,你可以看看RoundRectShape 实施 ,只是使用它的代码在你onDraw()方法。

编辑:关于comments RoundRectShape不是正确的方式去寻找实施是正确的。 继实施来找到一个电话:

mPath.addRoundedRect() 

其中有一个变化允许浮子圆角半径的作为输入( Path.addRoundRect )

在回答这个问题:

使用而不是一个形状可变的路径,并在必要时绘制新圆角矩形路径



文章来源: Android: RoundRectShape: Modify corner radii