话不多说先上图
思路:先进行整个屏幕的截图,然后在我们截取下来的图片上进行建材,获取我们手指当前的位置的一个小型图片放到我们的ImageView上,进行缩放处理,其中我们需要注意的是边缘的处理。
上代码:
第一步我们进行截图整个屏幕
/**
* @param
* @Name 截图逻辑
* @Data 2018/1/30 11:27
* @Author :MarkShuai
*/
public static Bitmap screenshot(Activity activity) {
// View是你须要截图的View
activity.getWindow().getDecorView().setDrawingCacheEnabled(true);
Bitmap bitmap = activity.getWindow().getDecorView().getDrawingCache();
return bitmap;
}
第二部:我们需要进行对我们的截取的图片进行处理,拿到我们手指当前位置的图片
/**
* @param
* @Name 放大区域图片
* @Data 2018/1/29 19:21
* @Author :MarkShuai
*/
public static Bitmap getUMImage(Context context,Bitmap bitmap, MotionEvent event) {
Matrix matrix = new Matrix();
matrix.setScale(1, 1);
int eventX = (int) event.getX() - 50;
int eventY = (int) event.getY() - 50;
int densityX = DensityUtil.dip2pxComm(context, 50);
int densityY = DensityUtil.dip2pxComm(context, 50);
Bitmap btm = null;
//边界判断开始
if (eventX < 0) {
eventX = 0;
}
if (eventY < 0) {
eventY = 0;
}
if (eventX + densityX >= bitmap.getWidth()) {
eventX = bitmap.getWidth() - densityX;
}
if (eventY + densityY >= bitmap.getHeight()) {
eventY = bitmap.getHeight() - densityY;
}
//边界判断结束
btm = Bitmap.createBitmap(bitmap,
eventX,
eventY,
densityX,
densityY,
matrix,
true);
return btm;
}
第三部我们进行我们ImageView的移动:
/**
* @param
* @Name 移动View
* @Data 2018/1/29 18:54
* @Author :MarkShuai
*/
public static void moveView(View view, MotionEvent event) {
view.setTranslationX(event.getX() - 50);
view.setTranslationY(event.getY() - (4 * view.getHeight() / 3));
}
源码下载地址:http://download.csdn.net/download/markmingshuai/10232038