private void updatePath() { if (bounds.isEmpty()) return; path = null; RectF outerRect = TiUIHelper.insetRect(boundsF, mPadding); if (radius != null) { path = new Path(); path.setFillType(FillType.EVEN_ODD); if (pathWidth > 0) { path.addRoundRect(outerRect, radius, Direction.CW); float padding = 0; float maxPadding = 0; RectF innerRect = new RectF(); maxPadding = Math.min(bounds.width() / 2, bounds.height() / 2); padding = Math.min(pathWidth, maxPadding); innerRect.set( outerRect.left + padding, outerRect.top + padding, outerRect.right - padding, outerRect.bottom - padding); path.addRoundRect(innerRect, innerRadiusFromPadding(outerRect, padding), Direction.CCW); } else { // adjustment not see background under border because of antialias path.addRoundRect(TiUIHelper.insetRect(outerRect, 0.3f), radius, Direction.CW); } } else { if (pathWidth > 0) { path = new Path(); path.setFillType(FillType.EVEN_ODD); path.addRect(outerRect, Direction.CW); int padding = 0; int maxPadding = 0; RectF innerRect = new RectF(); maxPadding = (int) Math.min(bounds.width() / 2, bounds.height() / 2); padding = (int) Math.min(pathWidth, maxPadding); innerRect.set( outerRect.left + padding, outerRect.top + padding, outerRect.right - padding, outerRect.bottom - padding); path.addRect(innerRect, Direction.CCW); } } }