亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

在Android中將view 轉換為Bitmap出現空指針如何解決

發布時間:2021-02-24 16:07:32 來源:億速云 閱讀:202 作者:戴恩恩 欄目:移動開發

這篇文章主要介紹了在Android中將view 轉換為Bitmap出現空指針如何解決,此處通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考價值,需要的朋友可以參考下:

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

 首先是轉換 的代碼:

/**
   * 將View(布局) 轉換為bitmap
   * @param view
   * @return
   */
  public static Bitmap createBitmap(View view){
    view.setDrawingCacheEnabled(true);
    /**
     * 這里要注意,在用View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
     * 來測量view 的時候,(如果你的布局中包含有 RelativeLayout )API 為17 或者 低于17 會包空指針異常
     * 解決方法:
     * 1 布局中不要包含RelativeLayout
     * 2 用 View.MeasureSpec.makeMeasureSpec(256, View.MeasureSpec.EXACTLY) 好像也可以
     *
     */
    view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
        View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
    view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
    view.buildDrawingCache();
    Bitmap bitmap = view.getDrawingCache();
    return bitmap;
  }

 上面就是轉換成Bitmap 的方法,但是要注意,在用View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)

          來測量view 的時候,(如果你的布局中包含有 RelativeLayout )API 為17 或者 低于17 會包空指針異常。在項目中遇到這個問題

死活不知道是怎么回事,后來在看源碼的時候才發現。以下是這個方法的官方解釋:

/**
     * Creates a measure specification based on the supplied size and mode.
     *
     * The mode must always be one of the following:
     * <ul>
     * <li>{@link android.view.View.MeasureSpec#UNSPECIFIED}</li>
     * <li>{@link android.view.View.MeasureSpec#EXACTLY}</li>
     * <li>{@link android.view.View.MeasureSpec#AT_MOST}</li>
     * </ul>
     *
     * <p><strong>Note:</strong> On API level 17 and lower, makeMeasureSpec's
     * implementation was such that the order of arguments did not matter
     * and overflow in either value could impact the resulting MeasureSpec.
     * {@link android.widget.RelativeLayout} was affected by this bug.
     * Apps targeting API levels greater than 17 will get the fixed, more strict
     * behavior.</p>
     *
     * @param size the size of the measure specification
     * @param mode the mode of the measure specification
     * @return the measure specification based on size and mode
     */
    public static int makeMeasureSpec(int size, int mode) {
      if (sUseBrokenMakeMeasureSpec) {
        return size + mode;
      } else {
        return (size & ~MODE_MASK) | (mode & MODE_MASK);
      }
    }

  在API 17 以上的系統中才修正了這個bug,這里有兩個解決方法:

 1 ,布局文件中不要包含Relativelayout 布局

 2,用 View.MeasureSpec.makeMeasureSpec(256, View.MeasureSpec.EXACTLY) 好像也可以

到此這篇關于在Android中將view 轉換為Bitmap出現空指針如何解決的文章就介紹到這了,更多相關在Android中將view 轉換為Bitmap出現空指針如何解決的內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

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

AI

施甸县| 四川省| 威宁| 赤壁市| 福清市| 蓝田县| 娄烦县| 巴林右旗| 通城县| 洪湖市| 杭锦后旗| 丰城市| 阿克陶县| 墨竹工卡县| 长汀县| 长治市| 论坛| 蓬安县| 遵义县| 西安市| 柞水县| 丰原市| 如皋市| 双峰县| 中山市| 嘉定区| 根河市| 嘉黎县| 澄迈县| 丘北县| 漯河市| 黑山县| 阿坝| 永定县| 静安区| 阿克苏市| 泸定县| 延吉市| 休宁县| 通江县| 塔城市|