android 获取屏幕截图 获取控件(View/Viewgroup)截图

本文分享了两种实用的截图方法:一是获取安卓应用中任意控件的截图,适用于View或Viewgroup;二是实现去除状态栏的屏幕整体截图,为开发者提供了便捷的截图解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开门见山的说,以下代码亲测过,都能起到相应的作用,直接拿去用就好了。

1.获取控件截图(View或Viewgroup类型都可以获取到)

public static Bitmap loadBitmapFromViewBySystem(View v) {
        if (v == null) {
            return null;
        }
        v.setDrawingCacheEnabled(true);
        v.buildDrawingCache();
        Bitmap bitmap = v.getDrawingCache();
        return bitmap;
    }

2.获取屏幕截图

/**
     * 获取当前屏幕截图,不包含状态栏
     *
     * @param activity
     * @return
     */
    public static Bitmap screenShotWithoutStatusBar(Activity activity) {
        //通过window的源码可以看出:检索顶层窗口的装饰视图,可以作为一个窗口添加到窗口管理器
        View view = activity.getWindow().getDecorView();
        //SYSTEM_UI_FLAG_FULLSCREEN表示全屏的意思,也就是会将状态栏隐藏
        //设置系统UI元素的可见性
        view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
        //启用或禁用绘图缓存
        view.setDrawingCacheEnabled(true);
        //创建绘图缓存
        view.buildDrawingCache();
        //拿到绘图缓存
        Bitmap bitmap = view.getDrawingCache();

        Rect frame = new Rect();
        activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
        //状态栏高度
        int statusBarHeight = frame.top;
        int width = ScreenUtils.getScreenWidth();
        int height = ScreenUtils.getScreenHeight();

        Bitmap bp = null;
//        bp = Bitmap.createBitmap(bitmap, 0, 0, width, height - statusBarHeight);
        bp = Bitmap.createScaledBitmap(bitmap, width, height - statusBarHeight,true);
        view.destroyDrawingCache();
        view.setSystemUiVisibility(View.VISIBLE);
        return bp;
    }

以上代码是去掉状态栏的截屏,如果不想去的话,bp = Bitmap.createScaledBitmap(bitmap, width, height - statusBarHeight,true);这里,height不要减去statusBarHeight即可。

以上。

 

      最后推荐给一些想进大厂或者还没有拿到心仪offer的攻城狮们一本书,由大厂java面试官胡书敏编写,满满的干货,助你进到想去的公司。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JesseAndroid

每一份支持都是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值