欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android異步生成圖片的示例代碼

 更新時間:2018年04月17日 10:09:38   作者:竹塵居士  
本篇文章主要介紹了android異步生成圖片的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

下面來說說在Android上如果異步生成圖片,通過xml布局用View排版好圖片樣式,在子線程生成一張圖片,以滿足生成用來分享的圖片等需求(生成圖片前設(shè)置可變元素,如用戶的頭像,昵稱等)。

效果

點擊按鈕生成圖片:

特性

  1. 通過布局和View的方式設(shè)計圖片樣式。
  2. 在子線程中生成和保存圖片。
  3. 封裝好工具類,直接使用即可。

核心代碼

private Bitmap createBitmap(View view) {
    int widthSpec = View.MeasureSpec.makeMeasureSpec(view.getLayoutParams().width, View.MeasureSpec.EXACTLY);
    int heightSpec = View.MeasureSpec.makeMeasureSpec(view.getLayoutParams().height, View.MeasureSpec.EXACTLY);
    view.measure(widthSpec, heightSpec);
    int measureWidth = view.getMeasuredWidth();
    int measureHeight = view.getMeasuredHeight();
    view.layout(0, 0, measureWidth, measureHeight);
    int width = view.getWidth();
    int height = view.getHeight();
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.draw(canvas);
    return bitmap;
  }

原理說明

通過走一遍ViewGroup的測量(measure),布局(layout),draw流程,把布局展示的界面畫到我們準備好的bitmap上(這一過程可在非UI線程完成),再把bitmap保存在文件或顯示到界面上。

  1. 在布局中寫好圖片的樣子,然后把布局inflate成View,當然也可以直接代碼編寫View,設(shè)置好里面的可變元素,如頭像,昵稱等。
  2. 通過調(diào)用View的measure,layout方法使之測量出內(nèi)部各控件的大小和排列好各控件。
  3. 創(chuàng)建一個和View大小相同的空Bitmap,新建一個畫布傳入該bitamp(new Canvas(bitmap)),調(diào)用view的draw(canvas)方法,view會把圖片繪制在該bitmap上。
  4. 保存到文件或直接使用圖片。

使用方法

在xml中布局圖片樣式:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="200dp"
  android:layout_height="200dp"
  android:background="#ECAA0A">

  <ImageView
    android:layout_width="160dp"
    android:layout_height="94dp"
    android:layout_gravity="center_horizontal"
    android:src="@mipmap/pic_bg" />

  <ImageView
    android:id="@+id/invitation_share_link_pic_avatar_iv"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:layout_gravity="center_horizontal|bottom"
    android:layout_marginBottom="10dp"
    android:src="@mipmap/ic_launcher" />
</FrameLayout>

寫一個自己的Model繼承自GenerateModel,設(shè)置可變元素并使用GeneratePictureManager單例的generate方法開始生成:

private void generate() {
    SharePicModel sharePicModel = new SharePicModel((ViewGroup) getWindow().getDecorView());
    sharePicModel.setAvatarResId(R.mipmap.ic_launcher);
    GeneratePictureManager.getInstance().generate(sharePicModel, (throwable, bitmap) -> {
      if (throwable != null || bitmap == null) {
        Toast.makeText(this, getString(R.string.generate_pic_error), Toast.LENGTH_SHORT).show();
      } else {
        Toast.makeText(this, getString(R.string.generate_pic_success), Toast.LENGTH_SHORT).show();
        mResultIv.setImageBitmap(bitmap);
      }
    });
  }

源碼地址Github: https://github.com/homgwu/picgenerator

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Flutter實現(xiàn)自定義下拉選擇框的示例詳解

    Flutter實現(xiàn)自定義下拉選擇框的示例詳解

    在一些列表頁面中,我們經(jīng)常會有上方篩選項的的需求,點擊出現(xiàn)一個下拉菜單,而在Flutter中,并沒有現(xiàn)成的這樣的組件,所以最好我們可以自己做一個。本文將利用Flutter實現(xiàn)自定義下拉選擇框,需要的可以參考一下
    2022-04-04
  • Android實現(xiàn)微信支付功能

    Android實現(xiàn)微信支付功能

    這篇文章主要介紹了Android實現(xiàn)微信支付功能,微信支付功能,幾乎成為很多APP付款的主要方式之一,本文講解Android APP微信支付功能開發(fā),感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android自定義覆蓋層控件 懸浮窗控件

    Android自定義覆蓋層控件 懸浮窗控件

    這篇文章主要為大家詳細介紹了Android自定義覆蓋層控件和懸浮窗控件的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Android關(guān)于獲取時間的記錄(小結(jié))

    Android關(guān)于獲取時間的記錄(小結(jié))

    這篇文章主要介紹了Android關(guān)于獲取時間的記錄(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Kotlin新手基礎(chǔ)學習之Elvis操作符

    Kotlin新手基礎(chǔ)學習之Elvis操作符

    Kotlin 是一種在 Java 虛擬機上運行的靜態(tài)類型編程語言,被稱之為 Android 世界的Swift,由 JetBrains 設(shè)計開發(fā)并開源,下面這篇文章主要給大家介紹了關(guān)于Kotlin新手基礎(chǔ)學習之Elvis操作符的相關(guān)資料,需要的朋友可以參考下。
    2017-12-12
  • Android如何使用正則表達式只保留字母數(shù)字

    Android如何使用正則表達式只保留字母數(shù)字

    在做項目的過程中,使用正則表達式來匹配一段文本中的特定種類字符,是比較常用的一種方式,下面這篇文章主要給大家介紹了關(guān)于Android如何使用正則表達式只保留字母數(shù)字的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Android 實現(xiàn)九宮格抽獎功能

    Android 實現(xiàn)九宮格抽獎功能

    這篇文章主要介紹了Android 實現(xiàn)九宮格抽獎功能,幫助大家更好的理解和學習使用Android,感興趣的朋友可以了解下
    2021-03-03
  • Android 桌面圖標右上角顯示未讀消息數(shù)字

    Android 桌面圖標右上角顯示未讀消息數(shù)字

    本文主要介紹了Android 桌面圖標右上角顯示未讀消息數(shù)字的方法。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • android通過gps獲取定位的位置數(shù)據(jù)和gps經(jīng)緯度

    android通過gps獲取定位的位置數(shù)據(jù)和gps經(jīng)緯度

    這篇文章主要介紹了android通過gps獲取定位的位置數(shù)據(jù)示例,大家參考使用吧
    2014-01-01
  • Android簡單實用的可拖拽GridView組件分享

    Android簡單實用的可拖拽GridView組件分享

    在我們?nèi)粘i_發(fā)中,使用?GridView?這種網(wǎng)格視圖的場合還是不少的,本篇我們來介紹一個支持拖拽的?GridView?組件,可以輕松搞定網(wǎng)格視圖的拖拽排序,需要的可以參考一下
    2023-06-06

最新評論