Android App开发进阶与项目实战
上QQ阅读APP看书,第一时间看更新

1.2.2 裁剪位图内部区域

上一节提到位图工具的createBitmap方法,该方法不仅能创建空白位图,还能原样复制位图,甚至能从原位图截取一部分下来。这多亏了方法重载,尽管几个方法都叫createBitmap,然而它们的方法参数各不相同,实现的功能也大相径庭。

本小节要介绍的createBitmap方法便是其中一个位图裁剪方法,它的第一个参数为原始的位图对象,第二个和第三个参数分别是裁剪起始点的横纵坐标,第四个参数为待截取的位图宽度,第五个参数为待截取的位图高度。注意,第二个到第五个参数表达了一个矩形框的上下左右边界,因而完全可以放在矩形对象Rect之中。

裁剪出来的新位图来自原始位图,为了清楚地标记它在原位图中的位置,可在图像视图上方覆盖新的图层,然后新图层先画一遍半透明的阴影,再画裁剪的位图部分,观察新老图层就能看出裁剪的部位。下面是显示裁剪图层的视图示例代码:

(完整代码见picture\src\main\java\com\example\picture\widget\CropImageView.java)

接着在布局文件中添加CropImageView节点,并在对应的活动页面先调用setOrigBitmap方法设置原始位图,再调用setBitmapRect方法指定裁剪部分的位图边界,之后即可看到被裁剪的位图部分。运行并测试该App,可观察到的裁剪效果如图1-14和图1-15所示。图1-14为裁剪前的画面,图1-15为裁剪后的画面。

图1-14 裁剪前的画面

图1-15 裁剪后的画面