ความเข้ากันได้ของอีโมจิ

ลองใช้ Compose
Jetpack Compose เป็นชุดเครื่องมือ UI ที่แนะนำสำหรับ Android ดูวิธีรองรับอีโมจิในฟีเจอร์เขียน

EmojiCompatไลบรารีการสนับสนุนมีจุดมุ่งหมายเพื่อ อัปเดตอีโมจิเวอร์ชันล่าสุดในอุปกรณ์ Android อยู่เสมอ ซึ่งจะป้องกันไม่ให้แอปของคุณ แสดงอักขระอีโมจิที่ขาดหายไปในรูปแบบของ ☐ ซึ่ง บ่งบอกว่าอุปกรณ์ของคุณไม่มีแบบอักษรที่จะแสดงข้อความ เมื่อ ใช้ไลบรารีการสนับสนุน EmojiCompat ผู้ใช้แอปของคุณจึงไม่ต้องรอการอัปเดตระบบปฏิบัติการ Android เพื่อรับอีโมจิล่าสุด

อุปกรณ์ที่แสดงอีโมจิ
รูปที่ 1 การเปรียบเทียบอีโมจิ

ดูแหล่งข้อมูลที่เกี่ยวข้องต่อไปนี้

  • แอปตัวอย่างความเข้ากันได้ของอีโมจิ Java | Kotlin

EmojiCompat ทำงานอย่างไร

ไลบรารีการสนับสนุน EmojiCompat มีคลาส สำหรับการใช้การรองรับอีโมจิที่เข้ากันได้แบบย้อนหลังในอุปกรณ์ที่ใช้ Android 4.4 (API ระดับ 19) ขึ้นไป คุณกำหนดค่า EmojiCompat ได้โดยใช้แบบอักษรที่มาพร้อมกับเครื่องหรือ แบบอักษรที่ดาวน์โหลดได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าได้ที่ส่วนต่อไปนี้

EmojiCompat ระบุอีโมจิสำหรับ CharSequence ที่กำหนด แทนที่ด้วย EmojiSpans หากจำเป็น และ สุดท้ายแสดงผลอักขระอีโมจิ รูปที่ 2 แสดงกระบวนการ

กระบวนการ EmojiCompat
รูปที่ 2 กระบวนการ EmojiCompat

การกำหนดค่าแบบอักษรที่ดาวน์โหลดได้

การกำหนดค่าแบบอักษรที่ดาวน์โหลดได้จะใช้ฟีเจอร์ไลบรารีการรองรับแบบอักษรที่ดาวน์โหลดได้ เพื่อดาวน์โหลดแบบอักษรอีโมจิ นอกจากนี้ยังอัปเดตข้อมูลเมตาของอีโมจิที่จำเป็น ซึ่งไลบรารีการสนับสนุน EmojiCompat ต้องใช้เพื่อให้เป็นไปตามข้อกำหนด Unicode เวอร์ชันล่าสุด

การเพิ่มการอ้างอิงไลบรารีการสนับสนุน

หากต้องการใช้EmojiCompatไลบรารีการสนับสนุน คุณต้องแก้ไขการอ้างอิง classpath ของโปรเจ็กต์แอปภายใน สภาพแวดล้อมการพัฒนา

วิธีเพิ่มไลบรารีการสนับสนุนลงในโปรเจ็กต์แอปพลิเคชัน

  1. เปิดbuild.gradleไฟล์ของแอปพลิเคชัน
  2. เพิ่มไลบรารีการสนับสนุนลงในส่วน dependencies

Groovy

dependencies {
    ...
    implementation "androidx.emoji:emoji:28.0.0"
}

Kotlin

dependencies {
    ...
    implementation("androidx.emoji:emoji:28.0.0")
}

การเริ่มต้นการกำหนดค่าแบบอักษรที่ดาวน์โหลดได้

คุณต้องเริ่มต้น EmojiCompat เพื่อ โหลดข้อมูลเมตาและแบบอักษร เนื่องจากการเริ่มต้นอาจใช้เวลาสักครู่ กระบวนการเริ่มต้นจึงทำงานในเธรดเบื้องหลัง

หากต้องการเริ่มต้น EmojiCompat ด้วย การกำหนดค่าแบบอักษรที่ดาวน์โหลดได้ ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างอินสแตนซ์ของคลาส FontRequest และระบุสิทธิ์ของผู้ให้บริการแบบอักษร แพ็กเกจของผู้ให้บริการแบบอักษร การค้นหาแบบอักษร และรายการชุดแฮชสำหรับใบรับรอง ดูข้อมูลเพิ่มเติมเกี่ยวกับ FontRequest ได้ที่ส่วนการใช้แบบอักษรที่ดาวน์โหลดได้แบบเป็นโปรแกรมในเอกสารประกอบแบบอักษรที่ดาวน์โหลดได้
  2. สร้างอินสแตนซ์ของ FontRequestEmojiCompatConfig และระบุอินสแตนซ์ของ Context และ FontRequest
  3. เริ่มต้น EmojiCompat โดยการเรียกใช้เมธอด init() และส่งอินสแตนซ์ของ FontRequestEmojiCompatConfig
  4. Kotlin

    class MyApplication : Application() {
    
        override fun onCreate() {
            super.onCreate()
            val fontRequest = FontRequest(
                    "com.example.fontprovider",
                    "com.example",
                    "emoji compat Font Query",
                    CERTIFICATES
            )
            val config = FontRequestEmojiCompatConfig(this, fontRequest)
            EmojiCompat.init(config)
        }
    }

    Java

    public class MyApplication extends Application {
      @Override
       public void onCreate() {
         super.onCreate();
         FontRequest fontRequest = new FontRequest(
           "com.example.fontprovider",
           "com.example",
           "emoji compat Font Query",
           CERTIFICATES);
         EmojiCompat.Config config = new FontRequestEmojiCompatConfig(this, fontRequest);
         EmojiCompat.init(config);
       }
    }
  5. ใช้EmojiCompatวิดเจ็ตในเลย์เอาต์ XML หากคุณใช้ AppCompat โปรดดูส่วน การใช้วิดเจ็ต EmojiCompat กับ AppCompat
  6. <android.support.text.emoji.widget.EmojiTextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>
    
    <android.support.text.emoji.widget.EmojiEditText
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>
    
    <android.support.text.emoji.widget.EmojiButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดค่า EmojiCompatด้วยการกำหนดค่า แบบอักษรที่ดาวน์โหลดได้ที่แอปตัวอย่างความเข้ากันได้ของอีโมจิ Java | Kotlin

คอมโพเนนต์ของไลบรารี

คอมโพเนนต์ของไลบรารีในกระบวนการ EmojiCompat
รูปที่ 3 คอมโพเนนต์ของไลบรารีในกระบวนการ EmojiCompat
วิดเจ็ต: EmojiEditText, EmojiTextView, EmojiButton
การติดตั้งใช้งานวิดเจ็ตเริ่มต้นที่จะใช้ EmojiCompat กับ TextView, EditText และ Button
EmojiCompat
แพลตฟอร์มสาธารณะหลักสำหรับไลบรารีการสนับสนุน โดยจะดำเนินการ การเรียกภายนอกทั้งหมดและประสานงานกับส่วนอื่นๆ ของระบบ
EmojiCompat.Config
กำหนดค่าอินสแตนซ์ Singleton ที่จะสร้าง
EmojiSpan
คลาสย่อย ReplacementSpan ที่แทนที่อักขระ (ลำดับ) และแสดงผลกลีฟ
EmojiCompat แบบอักษร
EmojiCompat ใช้แบบอักษรเพื่อแสดง อีโมจิ แบบอักษรนี้เป็นเวอร์ชันที่แก้ไขแล้วของ แบบอักษรอีโมจิของ Android แบบอักษรจะได้รับการแก้ไขดังนี้
  • เพื่อรองรับการทำงานย้อนหลังในการแสดงผลอีโมจิ อักขระอีโมจิทั้งหมดจะแสดงด้วยจุดโค้ด Unicode เดียวในพื้นที่การใช้งานส่วนตัวเสริมของ Unicode-A โดยเริ่มจาก U+F0001
  • ระบบจะแทรกข้อมูลเมตาของอีโมจิเพิ่มเติมในรูปแบบไบนารีลงในแบบอักษรและ EmojiCompat จะแยกวิเคราะห์ที่รันไทม์ ข้อมูลจะฝังอยู่ในตาราง meta ของแบบอักษร โดยมีแท็กส่วนตัว Emji

ตัวเลือกการกำหนดค่า

คุณสามารถใช้EmojiCompatอินสแตนซ์เพื่อ แก้ไขลักษณะการทํางานของ EmojiCompat คุณใช้ เมธอดต่อไปนี้จากคลาสฐานเพื่อตั้งค่ากำหนดได้

  • setReplaceAll(): กำหนดว่า EmojiCompat ควรแทนที่อีโมจิทั้งหมดที่พบด้วย EmojiSpans หรือไม่ โดยค่าเริ่มต้น EmojiCompat จะพยายามอย่างเต็มที่เพื่อ ทำความเข้าใจว่าระบบแสดงผลอีโมจิได้หรือไม่ และจะไม่แทนที่อีโมจิเหล่านั้น เมื่อตั้งค่าเป็น true EmojiCompat จะแทนที่อีโมจิทั้งหมดที่พบ ด้วย EmojiSpans
  • setEmojiSpanIndicatorEnabled(): ระบุว่า EmojiCompat ได้แทนที่อีโมจิด้วย EmojiSpan หรือไม่ เมื่อตั้งค่าเป็น true EmojiCompat จะวาดพื้นหลังสำหรับ EmojiSpan โดยวิธีนี้ส่วนใหญ่จะใช้ เพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่อง
  • setEmojiSpanIndicatorColor(): ตั้งค่าสีเพื่อระบุ EmojiSpan ค่าเริ่มต้นคือ GREEN
  • registerInitCallback: แจ้งให้แอปทราบเกี่ยวกับสถานะของ การเริ่มต้น EmojiCompat

Kotlin

val config = FontRequestEmojiCompatConfig(...)
        .setReplaceAll(true)
        .setEmojiSpanIndicatorEnabled(true)
        .setEmojiSpanIndicatorColor(Color.GREEN)
        .registerInitCallback(object: EmojiCompat.InitCallback() {
            ...
        })

Java

EmojiCompat.Config config = new FontRequestEmojiCompatConfig(...)
       .setReplaceAll(true)
       .setEmojiSpanIndicatorEnabled(true)
       .setEmojiSpanIndicatorColor(Color.GREEN)
       .registerInitCallback(new InitCallback() {...})

การเพิ่ม Listener การเริ่มต้น

คลาส EmojiCompat และ EmojiCompat มีเมธอด registerInitCallback() และ unregisterInitCallback() เพื่อลงทะเบียนการเรียกกลับการเริ่มต้น หากต้องการใช้วิธีเหล่านี้ ให้สร้าง อินสแตนซ์ของ คลาส EmojiCompat.InitCallback เรียกใช้ เมธอดเหล่านี้และส่งอินสแตนซ์ของคลาส EmojiCompat.InitCallback เมื่อ การเริ่มต้นใช้งานไลบรารีEmojiCompatการสนับสนุน สำเร็จแล้ว คลาส EmojiCompat จะเรียกใช้เมธอด onInitialized() หากไลบรารี เริ่มต้นไม่สำเร็จ คลาส EmojiCompat จะเรียกเมธอด onFailed()

หากต้องการตรวจสอบสถานะการเริ่มต้นได้ทุกเมื่อ ให้เรียกใช้เมธอด getLoadState() โดยจะแสดงค่าใดค่าหนึ่งต่อไปนี้ LOAD_STATE_LOADING LOAD_STATE_SUCCEEDED หรือ LOAD_STATE_FAILED

การใช้ EmojiCompat กับวิดเจ็ต AppCompat

หากใช้ AppCompat widgets คุณ จะใช้วิดเจ็ต EmojiCompat ที่ขยาย จาก AppCompat widgets ได้

  1. เพิ่มไลบรารีการสนับสนุนลงในส่วนการขึ้นต่อกัน

    Groovy

    dependencies {
        ...
        implementation "androidx.emoji:emoji-bundled:$version"
    }

    Kotlin

          dependencies {
              implementation("androidx.emoji:emoji-appcompat:$version")
          }
          

    Groovy

          dependencies {
              implementation "androidx.emoji:emoji-appcompat:$version"
          }
          
  2. ใช้EmojiCompat AppCompat Widgetวิดเจ็ตในเลย์เอาต์ XML
  3. <android.support.text.emoji.widget.EmojiAppCompatTextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>
    
    <android.support.text.emoji.widget.EmojiAppCompatEditText
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>
    
    <android.support.text.emoji.widget.EmojiAppCompatButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"/>

การกำหนดค่าแบบอักษรที่มาพร้อมกับเครื่อง

EmojiCompat ไลบรารีการสนับสนุนยังมีให้บริการในเวอร์ชันฟอนต์แบบรวมด้วย แพ็กเกจนี้มีแบบอักษรพร้อม ข้อมูลเมตาที่ฝังอยู่ นอกจากนี้ แพ็กเกจยังมี BundledEmojiCompatConfig ที่ใช้ AssetManager เพื่อโหลดข้อมูลเมตา และแบบอักษร

หมายเหตุ: ขนาดของแบบอักษรมีขนาดหลาย เมกะไบต์

การเพิ่มการอ้างอิงไลบรารีการสนับสนุน

หากต้องการใช้EmojiCompatไลบรารีการสนับสนุน กับการกำหนดค่าแบบอักษรที่รวมไว้ คุณต้องแก้ไขทรัพยากร Dependency ของ Classpath ของโปรเจ็กต์แอป ภายในสภาพแวดล้อมการพัฒนา

วิธีเพิ่มไลบรารีการสนับสนุนลงในโปรเจ็กต์แอปพลิเคชัน

  1. เปิดbuild.gradleไฟล์ของแอปพลิเคชัน
  2. เพิ่มไลบรารีการสนับสนุนลงในส่วน dependencies

Groovy

dependencies {
    ...
    implementation "androidx.emoji:emoji:28.0.0"
}

Kotlin

dependencies {
    ...
    implementation("androidx.emoji:emoji:28.0.0")
}

การใช้แบบอักษรที่มาพร้อมกับแพ็กเกจเพื่อกำหนดค่า EmojiCompat

หากต้องการใช้แบบอักษรที่รวมไว้เพื่อกำหนดค่า EmojiCompat ให้ทำตามขั้นตอนต่อไปนี้

  1. ใช้ BundledEmojiCompatConfig เพื่อสร้างอินสแตนซ์ของ EmojiCompat และระบุอินสแตนซ์ของ Context
  2. เรียกใช้เมธอด init() เพื่อเริ่มต้น EmojiCompat และส่งอินสแตนซ์ของ BundledEmojiCompatConfig

Kotlin

class MyApplication : Application() {

    override fun onCreate() {
        super.onCreate()
        val config = BundledEmojiCompatConfig(this)
        EmojiCompat.init(config)
    }
}

Java

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        EmojiCompat.Config config = new BundledEmojiCompatConfig(this);
        EmojiCompat.init(config);
        ...
    }
}

การใช้ EmojiCompat โดยไม่มีวิดเจ็ต

EmojiCompat ใช้ EmojiSpan เพื่อแสดงผลรูปภาพที่ถูกต้อง ดังนั้น จึงต้องแปลง CharSequence ที่ระบุเป็น อินสแตนซ์ Spanned ที่มี EmojiSpans คลาส EmojiCompat มีเมธอดสำหรับ แปลง CharSequences เป็น อินสแตนซ์ Spanned ที่มี EmojiSpans การใช้วิธีนี้ คุณจะประมวลผลและแคชอินสแตนซ์ที่ประมวลผลแล้วแทนสตริงดิบได้ ซึ่งจะช่วยปรับปรุงประสิทธิภาพของแอปพลิเคชัน

Kotlin

val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")

Java

CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");

การใช้ EmojiCompat สำหรับ IME

เมื่อใช้EmojiCompatคลังการสนับสนุน แป้นพิมพ์จะแสดงอีโมจิที่แอปพลิเคชันที่โต้ตอบด้วยรองรับ IME สามารถใช้วิธี hasEmojiGlyph() เพื่อตรวจสอบว่า EmojiCompat สามารถ แสดงผลอีโมจิได้หรือไม่ เมธอดนี้รับ CharSequence ของ อีโมจิและแสดงผล true หาก EmojiCompat ตรวจจับและแสดงผล อีโมจิได้

นอกจากนี้ แป้นพิมพ์ยังตรวจสอบเวอร์ชันของ EmojiCompatไลบรารีการสนับสนุนที่แอป รองรับเพื่อกำหนดว่าควรแสดงอีโมจิใดในจานสี หากต้องการตรวจสอบเวอร์ชัน (หากมี) แป้นพิมพ์จะต้องตรวจสอบว่ามีคีย์ต่อไปนี้อยู่ในชุดEditorInfo.extras หรือไม่

  • EDITOR_INFO_METAVERSION_KEY
  • หากมีคีย์อยู่ในแพ็กเกจ ค่าจะแสดงถึง เวอร์ชันของข้อมูลเมตาอีโมจิที่แอปใช้ หากไม่มีคีย์นี้ แสดงว่าแอปไม่ได้ใช้ EmojiCompat

  • EDITOR_INFO_REPLACE_ALL_KEY
  • หากมีคีย์และตั้งค่าเป็น true แสดงว่าแอปได้เรียกใช้เมธอด SetReplaceAll() แล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับ EmojiCompat การกำหนดค่า ได้ที่ส่วนตัวเลือกการกำหนดค่า

หลังจากได้รับคีย์ใน EditorInfo.extras bundle แล้ว แป้นพิมพ์จะใช้วิธี hasEmojiGlyph() ได้ โดย metadataVersion คือค่าของ EDITOR_INFO_METAVERSION_KEY เพื่อตรวจสอบว่าแอปแสดงอีโมจิที่เฉพาะเจาะจงได้หรือไม่

การใช้ EmojiCompat กับวิดเจ็ตที่กำหนดเอง

คุณใช้เมธอด process() เพื่อประมวลผลล่วงหน้า CharSequence ในแอปและเพิ่ม ลงในวิดเจ็ตที่แสดงผลอินสแตนซ์ Spanned ได้ทุกเมื่อ เช่น TextView นอกจากนี้ EmojiCompat ยังมีคลาสตัวช่วยวิดเจ็ตต่อไปนี้ เพื่อให้คุณเพิ่มการรองรับอีโมจิลงในวิดเจ็ตที่กำหนดเองได้โดย ไม่ต้องเสียเวลามาก

TextView ตัวอย่าง

Kotlin

class MyTextView(context: Context) : AppCompatTextView(context) {

    private val emojiTextViewHelper: EmojiTextViewHelper by lazy(LazyThreadSafetyMode.NONE) {
        EmojiTextViewHelper(this).apply {
            updateTransformationMethod()
        }
    }

    override fun setFilters(filters: Array<InputFilter>) {
        super.setFilters(emojiTextViewHelper.getFilters(filters))
    }

    override fun setAllCaps(allCaps: Boolean) {
        super.setAllCaps(allCaps)
        emojiTextViewHelper.setAllCaps(allCaps)
    }
}

Java

public class MyTextView extends AppCompatTextView {
   ...
   public MyTextView(Context context) {
       super(context);
       init();
   }
   ...
   private void init() {
       getEmojiTextViewHelper().updateTransformationMethod();
   }

   @Override
   public void setFilters(InputFilter[] filters) {
       super.setFilters(getEmojiTextViewHelper().getFilters(filters));
   }

   @Override
   public void setAllCaps(boolean allCaps) {
       super.setAllCaps(allCaps);
       getEmojiTextViewHelper().setAllCaps(allCaps);
   }

   private EmojiTextViewHelper getEmojiTextViewHelper() {
       ...
   }
}
ตัวอย่าง EditText

Kotlin

class MyEditText(context: Context) : AppCompatEditText(context) {

    private val emojiEditTextHelper: EmojiEditTextHelper by lazy(LazyThreadSafetyMode.NONE) {
        EmojiEditTextHelper(this).also {
            super.setKeyListener(it.getKeyListener(keyListener))
        }
    }

    override fun setKeyListener(input: KeyListener?) {
        input?.also {
            super.setKeyListener(emojiEditTextHelper.getKeyListener(it))
        }
    }

    override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection {
        val inputConnection: InputConnection = super.onCreateInputConnection(outAttrs)
        return emojiEditTextHelper.onCreateInputConnection(
                inputConnection,
                outAttrs
        ) as InputConnection
    }
}

Java

public class MyEditText extends AppCompatEditText {
   ...
   public MyEditText(Context context) {
       super(context);
       init();
   }
   ...
   private void init() {
       super.setKeyListener(getEmojiEditTextHelper().getKeyListener(getKeyListener()));
   }

   @Override
   public void setKeyListener(android.text.method.KeyListener keyListener) {
       super.setKeyListener(getEmojiEditTextHelper().getKeyListener(keyListener));
   }

   @Override
   public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
       InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
       return getEmojiEditTextHelper().onCreateInputConnection(inputConnection, outAttrs);
   }

   private EmojiEditTextHelper getEmojiEditTextHelper() {
       ...
   }
}

คำถามที่พบบ่อย

  • ฉันจะเริ่มดาวน์โหลดแบบอักษรได้อย่างไร
  • ระบบจะดาวน์โหลดแบบอักษรอีโมจิเมื่อมีการขอครั้งแรก หากไม่มีแบบอักษรดังกล่าวในอุปกรณ์ การตั้งเวลาการดาวน์โหลดจะโปร่งใสต่อแอป

  • การเริ่มต้นใช้เวลานานเท่าใด
  • หลังจากดาวน์โหลดแบบอักษรแล้ว จะใช้เวลาประมาณ 150 มิลลิวินาที ในการเริ่มต้น EmojiCompat

  • ไลบรารีการสนับสนุน EmojiCompat ใช้หน่วยความจำเท่าใด
  • ปัจจุบันโครงสร้างข้อมูลสำหรับค้นหาอีโมจิจะโหลดอยู่ในหน่วยความจำของแอป และใช้พื้นที่ประมาณ 200 KB

  • ฉันใช้ EmojiCompat กับ TextView ที่กำหนดเองได้ไหม
  • ได้ EmojiCompat มีคลาสตัวช่วยสำหรับวิดเจ็ตที่กำหนดเอง นอกจากนี้ คุณยัง ประมวลผลล่วงหน้าสตริงที่ระบุและแปลงเป็น Spannedได้ด้วย ดูข้อมูลเพิ่มเติมเกี่ยวกับคลาสตัวช่วยวิดเจ็ตได้ที่ส่วนการใช้ EmojiCompat กับวิดเจ็ตที่กำหนดเอง

  • จะเกิดอะไรขึ้นหากฉันเพิ่มวิดเจ็ตใน XML ของเลย์เอาต์ในอุปกรณ์ที่ ใช้ Android 4.4 (API ระดับ 19) หรือต่ำกว่า
  • คุณสามารถรวมEmojiCompat ไลบรารีการสนับสนุนหรือวิดเจ็ตของไลบรารีดังกล่าวไว้ในแอปพลิเคชันที่รองรับอุปกรณ์ ที่ใช้ Android 4.4 (API ระดับ 19) หรือต่ำกว่า อย่างไรก็ตาม หากอุปกรณ์ใช้ Android เวอร์ชันก่อนระดับ API 19 EmojiCompat และวิดเจ็ตอยู่ในสถานะ "ไม่มีการดำเนินการ" ซึ่งหมายความว่า EmojiTextView จะทำงานเหมือนกับ TextView ปกติทุกประการ อินสแตนซ์ EmojiCompat จะเข้าสู่สถานะ LOAD_STATE_SUCCEEDED ทันทีเมื่อคุณเรียกใช้เมธอด init()

แหล่งข้อมูลเพิ่มเติม

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ไลบรารี EmojiCompat ได้ที่ EmojiCompat