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;

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容