91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[Android學習筆記二] View轉化Bitmap

發布時間:2020-07-10 10:48:19 來源:網絡 閱讀:2172 作者:secondriver 欄目:移動開發

   在View類中的onDraw方法的參數Canvas是View繪制的背景,要將View轉換為Bitmap實際上就是讓Canvas上的繪制操作繪制到Bitmap上。


   View轉化為Bitmap也稱為截屏,讓用戶看到的View視圖轉化為圖片的過程。


   關于View轉化Bitmap涉及到的View類中的方法有:


   protected void onDraw(Canvas canvas)
   public void buildDrawingCache()
   public void destroyDrawingCache()
   public Bitmap getDrawingCache()
   public void setDrawingCacheEnabled(boolean enabled)


   下面是常見的幾個View截屏的示例:

  

1.View轉Bitmap

   

public final Bitmap screenShot(View view) {
        if (null == view) {
            throw new IllegalArgumentException("parameter can't be null.");
        }
        view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
        view.setDrawingCacheEnabled(true);
        view.buildDrawingCache();
        Bitmap bitmap = view.getDrawingCache();
        return bitmap;
    }

  

2. Activity轉Bitmap,不帶狀態欄

public final Bitmap screenShot(Activity activity) {
        if (null == activity) {
            throw new IllegalArgumentException("parameter can't be null.");
        }
        View view = activity.getWindow().getDecorView();
        view.setDrawingCacheEnabled(true);
        view.buildDrawingCache();

        Bitmap b1 = view.getDrawingCache();
        Rect frame = new Rect();
        view.getWindowVisibleDisplayFrame(frame);

        int statusBarHeight = frame.top;

        Point point = new Point();
        activity.getWindowManager().getDefaultDisplay().getSize(point);

        int width = point.x;
        int height = point.y;

        Bitmap b2 = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);
        view.destroyDrawingCache();
        return b2;
    }


3. ScrollView轉長Bitmap(類似錘子便簽的截長圖)


 public final Bitmap screenShot(ScrollView scrollView) {
        if (null == scrollView) {
            throw new IllegalArgumentException("parameter can't be null.");
        }
        int height = 0;
        Bitmap bitmap;
        for (int i = 0, s = scrollView.getChildCount(); i < s; i++) {
            height += scrollView.getChildAt(i).getHeight();
            scrollView.getChildAt(i).setBackgroundResource(android.R.drawable.screen_background_light);
        }
        bitmap = Bitmap.createBitmap(scrollView.getWidth(), height, Bitmap.Config.ARGB_8888);
        final Canvas canvas = new Canvas(bitmap);
        scrollView.draw(canvas);
        return bitmap;
    }


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

菏泽市| 合肥市| 迭部县| 黄浦区| 西充县| 呼图壁县| 金昌市| 筠连县| 峡江县| 阿尔山市| 灵宝市| 曲周县| 泰安市| 长岭县| 麦盖提县| 罗定市| 汉寿县| 会泽县| 金秀| 清流县| 渭源县| 阿拉善盟| 莆田市| 武隆县| 儋州市| 马尔康县| 三台县| 开封市| 疏勒县| 山阳县| 通山县| 宜丰县| 深州市| 临洮县| 英德市| 新晃| 昭觉县| 成安县| 威海市| 宾阳县| 中西区|