获取View的截图-将View转换为Bitmap对象

开发中,有时候需要获取View的截图来做动画来达到动画流程的目的

原理:将View的内容画到一个Bitmap画布上,然后取出

下面封装了一个从View生成Bitmap的工具类

/**
 * 将View转换为Bitmap对象
 */
public class ViewToBitmapUtil {

    private static final String TAG = "ViewToBitmapUtil";

    public static Bitmap convertViewToBitmap(View view) {
        view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),             MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
        view.buildDrawingCache();
        Bitmap bitmap = view.getDrawingCache();     // 或者可以使用下面的方法     // view.setDrawingCacheEnabled(true);     // Bitmap bmp = Bitmap.createBitmap(view.getDrawingCache());
     return bitmap;
    }

    public static Bitmap convertViewToBitmap(View view, int bitmapWidth, int bitmapHeight) {
        Bitmap bitmap = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
        view.draw(new Canvas(bitmap));
        return bitmap;
    }

    public static void getScreenRectOfView(View view, Rect outRect) {
        int pos[] = new int[2];
        view.getLocationOnScreen(pos);
        outRect.set(pos[0], pos[1], pos[0] + view.getWidth(), pos[1] + view.getHeight());
    }}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏非著名程序员

Android系统更改状态栏字体颜色

原文地址:http://blog.isming.me/2016/01/09/chang-android-statusbar-text-color/,转载请注明出...

2526
来自专栏何俊林

一款开源Android在线音乐播放器

本文是wangchenyan同学的一个毕业设计作品,对于想研究音乐播放器的同学,特别是歌词自定义滚动部分。如下:支持自动滚动,超长歌词自动换行,自定义属性。 ?...

5139
来自专栏一个爱瞎折腾的程序猿

使用HttpDownLoadHelper下载文件

541
来自专栏移动开发之家

Android 实现视屏播放器、边播边缓存功能、外加铲屎(IJKPlayer)

Android上最为人熟知的MediaPlayer,对,就是这货,在上两篇音频文章中频频露脸的家伙,这次又有它的身影,然而还是这次不讲他,就连他的封装类Vide...

1013
来自专栏wOw的Android小站

[Android][Framework] Gallery幻灯片流程以及一个Bitmap的bug

用Camera录制任意长度视频。进入Gallery,打开包含刚拍好的视频的相册,然后右上角选择展示“幻灯片”,发现,刚才的视频的Thumbnail出现倾斜,被分...

351
来自专栏一个会写诗的程序员的博客

使用 Kotlin 开发 Android 应用 | 8 个最优秀的 Android Studio 插件 Kotlin Android 素材butterknife8 个最优秀的 Android

http://jakewharton.github.io/butterknife/

1183
来自专栏Golang语言社区

使用Go开发一个简单的服务器程序

最近有个小项目,需要一个简单的后台程序来支撑,本来想用Nodejs来做,但是由于本人js一直很菜,并且很讨厌callback,虽然我也很喜欢异步模型,但我一直都...

33710
来自专栏菩提树下的杨过

PixelBender(着色器)初体验

只要是玩过photoshop的人,一定会对ps中的各式各样、功能强大的滤镜(filter)留下深刻的印象。 Adobe是靠图形处理软件起家的,这方面一直是它的强...

2206
来自专栏技术小黑屋

WebView处理网页位置请求

随着移动设备的激增,LBS(Location Based Service)已然成为趋势,其最关键的还是获取设备的位置信息。native代码获取位置信息轻轻松松可...

591
来自专栏刘望舒

教你如何更好的加载大图片和长图片

我们在做开发的时候总是会不可避免的遇到加载图片的情况,当图片的尺寸小于ImageView的尺寸的时候,我们当然可以很happy的去直接加载展示。但是如果我们要加...

1763

扫码关注云+社区