【Android高级UI】计算不规则图形面积
问题
在手写类,识别类,或地图类应用当中
我们可能会遇到画一个不规则的区域,然后求其面积的需求
原理
Android的RegionIterator,提供了将不规则区域,分割为若干规则矩形的功能
只要计算出每个小矩形的面积,累积起来就是整个区域的面积
我们手绘的信息,一般通过Path来记录,而Region可以通过Path来创建
实现代码
fun Path.area() {close()val region = Region()val bound = computeBounds(true)val clip = Region(bound.toRect())region.setPath(this, clip)var area = 0var tempRect = Rect()val iterator = RegionIterator(region)while (iterator.next(tempRect)) {area += tempRect.width() * tempRect.height()}
}