Android实现指定控件区域截屏

Android实现指定控件区域截屏

/**
 * 生成视图的预览
 * @param activity
 * @param v
 * @return  视图生成失败返回null
 *          视图生成成功返回视图的绝对路径
 */
public static String saveImage(Activity activity, View v) {
    Bitmap bitmap;
    String path =  Environment.getExternalStorageDirectory().getAbsolutePath()  + "preview.png";
    View view = activity.getWindow().getDecorView();
    view.setDrawingCacheEnabled(true);
    view.buildDrawingCache();
    bitmap = view.getDrawingCache();
    Rect frame = new Rect();
    activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
    int[] location = new int[2];
    v.getLocationOnScreen(location);
    try {
        bitmap = Bitmap.createBitmap(bitmap, location[0], location[1], v.getWidth(), v.getHeight());
        FileOutputStream fout = new FileOutputStream(path);
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, fout);
        return path;
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        Logger.e(TAG, "生成预览图片失败:" + e);
    } catch (IllegalArgumentException e) {
        Logger.e(TAG, "width is <= 0, or height is <= 0");
    } finally {
        // 清理缓存
        view.destroyDrawingCache();
    }
    return null;

}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值