El Arsenal de Android – Emoji

AXEmojiView es una biblioteca avanzada de Android
que agrega emojis, pegatinas, … soporte a su aplicación de Android
DemoAPK • Lanzamientos


Captura de pantalla

Resumen

Instalación

AXEmojiView está disponible en JCenter, por lo que solo necesita agregarlo como una dependencia (módulo Gradle)

Última versión: 1.2.2

Gradle

implementation 'com.aghajari.emojiview:AXEmojiView:1.2.2'

Experto de

<dependency>
  <groupId>com.aghajari.emojiview</groupId>
  <artifactId>AXEmojiView</artifactId>
  <version>1.2.2</version>
  <type>pom</type>
</dependency>

¡Vamos a empezar! ?

Instalar el proveedor de Emoji

El primer paso, debe instalar EmojiView con su EmojiProvider.

AXEmojiManager.install(this,new AXIOSEmojiProvider());

Proveedor de Emoji personalizado

Si desea mostrar sus Emojis, puede crear su propia implementación EmojiProvider y pasarlo a AXEmojiManager.install.

Uso básico

Crear un AXEmojiEditText en su diseño.

<com.aghajari.axemojiview.view.AXEmojiEditText
            android:id="@+id/edt"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="enter your message ..." />

Ahora debería crear una página. Las páginas actuales son:

  • EmojiView
  • SingleEmojiView
  • StickerView

Probemos EmojiView:

AXEmojiEditText edt = findViewById(R.id.edt);

AXEmojiView emojiView = new AXEmojiView(this);
emojiView.setEditText(edt);

Y agregue esta página a AXEmojiPopup:

AXEmojiPopup emojiPopup = new AXEmojiPopup(emojiView);

emojiPopup.toggle(); // Toggles visibility of the Popup.
emojiPopup.show(); // Shows the Popup.
emojiPopup.dismiss(); // Dismisses the Popup.
emojiPopup.isShowing(); // Returns true when Popup is showing.

¡Y hemos terminado! ? Resultado:

AXEmojiPopupLayout

¡también puede crear un AXEmojiPopupLayout en lugar de AXEmojiPopup! Creo que AXEmojiPopupLayout tiene un mejor rendimiento.

  1. cree un AXEmojiPopupLayout en su diseño.
    <com.aghajari.emojiview.view.AXEmojiPopupLayout
        android:id="@+id/layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"/>
  1. agregue la página creada a AXEmojiPopupLayout:
AXEmojiPopupLayout layout = findViewById(R.id.layout);
layout.initPopupView(emojiView);

layout.toggle(); // Toggles visibility of the Popup.
layout.show(); // Shows the Popup.
layout.dismiss(); // Dismisses the Popup.
layout.hideAndOpenKeyboard(); // Hides the popup
layout.isShowing(); // Returns true when Popup is showing.

¡El resultado es el mismo que el resultado de AXEmojiPopup!

Vista de un solo emoji

SingleEmojiView es un RecyclerView y todos los emojis se cargarán en una página (como Telegram Inc)

AXSingleEmojiView emojiView = new AXSingleEmojiView(this);
emojiView.setEditText(edt);

Resultado:

StickerView

StickerView: necesita crear su StickerProvider y cargar todas sus pegatinas (desde Url, Res, Bitmap o lo que desee). Vea el ejemplo: WhatsAppProvider

AXStickerView stickerView = new AXStickerView(this , "stickers" , new MyStickerProvider());

Resultado:

También puede crear sus propias páginas personalizadas en StickerProvider. ver ejemplo: ShopStickers

Resultado:

AXEmojiPager – ¡Usa varias páginas juntas!

puede crear un AXEmojiPager y agregar todas sus páginas (EmojiView, StickerView, …) a EmojiPager

Habilite la vista de pie de página en la configuración del tema (si lo desea):

AXEmojiManager.getEmojiViewTheme().setFooterEnabled(true);

Y crea tu EmojiPager:

AXEmojiPager emojiPager = new AXEmojiPager(this);

AXSingleEmojiView singleEmojiView = new AXSingleEmojiView(this);
emojiPager.addPage(singleEmojiView, R.drawable.ic_msg_panel_smiles);

AXStickerView stickerView = new AXStickerView(this, "stickers", new WhatsAppProvider());
emojiPager.addPage(stickerView, R.drawable.ic_msg_panel_stickers);

emojiPager.setSwipeWithFingerEnabled(true);
emojiPager.setEditText(edt);

AXEmojiPopup emojiPopup = new AXEmojiPopup(emojiPager);
//layout.initPopupView(emojiPager);

Agregue el botón de búsqueda al pie de página:

emojiPager.setLeftIcon(R.drawable.ic_ab_search);
        
        //Click Listener
        emojiPager.setOnFooterItemClicked(new AXEmojiPager.onFooterItemClicked() {
            @Override
            public void onClick(boolean leftIcon) {
                if (leftIcon) Toast.makeText(EmojiActivity.this,"Search Clicked",Toast.LENGTH_SHORT).show();
            }
        });

Resultado:

Crea tus propias páginas personalizadas

Cree un AXEmojiBase (ViewGroup) y cargue el diseño de su página y agregue su CustomPage a emojiPager

Ejemplo: LoadingPage

emojiPager.addPage(new LoadingView(this), R.drawable.msg_round_load_m);

Resultado:

Personalización

Personaliza el tema con AXEmojiTheme.

AXEmojiManager.getEmojiViewTheme().setSelectionColor(0xffFF4081);
AXEmojiManager.getEmojiViewTheme().setFooterSelectedItemColor(0xffFF4081);
AXEmojiManager.getEmojiViewTheme().setFooterBackgroundColor(Color.WHITE);
AXEmojiManager.getEmojiViewTheme().setSelectionColor(Color.TRANSPARENT);
AXEmojiManager.getEmojiViewTheme().setSelectedColor(0xffFF4081);
AXEmojiManager.getEmojiViewTheme().setCategoryColor(Color.WHITE);
AXEmojiManager.getEmojiViewTheme().setAlwaysShowDivider(true);
AXEmojiManager.getEmojiViewTheme().setBackgroundColor(Color.LTGRAY);

AXEmojiManager.getStickerViewTheme().setSelectedColor(0xffFF4081);
AXEmojiManager.getStickerViewTheme().setCategoryColor(Color.WHITE);
AXEmojiManager.getStickerViewTheme().setAlwaysShowDivider(true);
AXEmojiManager.getStickerViewTheme().setBackgroundColor(Color.LTGRAY);

Resultado:

Pie de página personalizado

// disable default footer
AXEmojiManager.getEmojiViewTheme().setFooterEnabled(false);
AXEmojiManager.getInstance().setBackspaceCategoryEnabled(false);

// add your own footer to the AXEmojiPager
EmojiPager.setCustomFooter(footerView,true);

Resultado:

Modo oscuro

AXEmojiManager.getEmojiViewTheme().setFooterEnabled(true);
AXEmojiManager.getEmojiViewTheme().setSelectionColor(0xff82ADD9);
AXEmojiManager.getEmojiViewTheme().setSelectedColor(0xff82ADD9);
AXEmojiManager.getEmojiViewTheme().setFooterSelectedItemColor(0xff82ADD9);
AXEmojiManager.getEmojiViewTheme().setBackgroundColor(0xFF1E2632);
AXEmojiManager.getEmojiViewTheme().setCategoryColor(0xFF1E2632);
AXEmojiManager.getEmojiViewTheme().setFooterBackgroundColor(0xFF1E2632);
AXEmojiManager.getEmojiViewTheme().setVariantPopupBackgroundColor(0xFF232D3A);
AXEmojiManager.getEmojiViewTheme().setVariantDividerEnabled(false);
AXEmojiManager.getEmojiViewTheme().setDividerColor(0xFF1B242D);
AXEmojiManager.getEmojiViewTheme().setDefaultColor(0xFF677382);
AXEmojiManager.getEmojiViewTheme().setTitleColor(0xFF677382);

AXEmojiManager.getStickerViewTheme().setSelectionColor(0xff82ADD9);
AXEmojiManager.getStickerViewTheme().setSelectedColor(0xff82ADD9);
AXEmojiManager.getStickerViewTheme().setBackgroundColor(0xFF1E2632);
AXEmojiManager.getStickerViewTheme().setCategoryColor(0xFF1E2632);
AXEmojiManager.getStickerViewTheme().setDividerColor(0xFF1B242D);
AXEmojiManager.getStickerViewTheme().setDefaultColor(0xFF677382);

Resultado:

AXEmojiManager.getEmojiViewTheme().setFooterEnabled(true);
AXEmojiManager.getEmojiViewTheme().setSelectionColor(Color.TRANSPARENT);
AXEmojiManager.getEmojiViewTheme().setSelectedColor(0xff82ADD9);
AXEmojiManager.getEmojiViewTheme().setFooterSelectedItemColor(0xff82ADD9);
AXEmojiManager.getEmojiViewTheme().setBackgroundColor(0xFF1E2632);
AXEmojiManager.getEmojiViewTheme().setCategoryColor(0xFF232D3A);
AXEmojiManager.getEmojiViewTheme().setFooterBackgroundColor(0xFF232D3A);
AXEmojiManager.getEmojiViewTheme().setVariantPopupBackgroundColor(0xFF232D3A);
AXEmojiManager.getEmojiViewTheme().setVariantDividerEnabled(false);
AXEmojiManager.getEmojiViewTheme().setDividerColor(0xFF1B242D);
AXEmojiManager.getEmojiViewTheme().setDefaultColor(0xFF677382);
AXEmojiManager.getEmojiViewTheme().setTitleColor(0xFF677382);
AXEmojiManager.getEmojiViewTheme().setAlwaysShowDivider(true);

AXEmojiManager.getStickerViewTheme().setSelectionColor(0xff82ADD9);
AXEmojiManager.getStickerViewTheme().setSelectedColor(0xff82ADD9);
AXEmojiManager.getStickerViewTheme().setBackgroundColor(0xFF1E2632);
AXEmojiManager.getStickerViewTheme().setCategoryColor(0xFF232D3A);
AXEmojiManager.getStickerViewTheme().setDividerColor(0xFF1B242D);
AXEmojiManager.getStickerViewTheme().setDefaultColor(0xFF677382);
AXEmojiManager.getStickerViewTheme().setAlwaysShowDivider(true);

Resultado:

Puntos de vista

  • AXEmojiPopupLayout
  • AXEmojiBase / AXEmojiLayout
  • AXEmojiView
  • AXSingleEmojiView
  • AXStickerView
  • AXEmojiEditText
  • AXEmojiMultiAutoCompleteTextView
  • AXEmojiButton
  • AXEmojiImageView
  • AXEmojiTextView
  • AXEmojiCheckBox
  • AXEmojiRadioButton

Oyentes

onEmojiActions:

    void onClick (View view, Emoji emoji, boolean fromRecent, boolean fromVariant);
    void onLongClick (View view, Emoji emoji, boolean fromRecent, boolean fromVariant);

onStickerActions:

    void onClick(View view, Sticker sticker, boolean fromRecent);
    void onLongClick(View view, Sticker sticker, boolean fromRecent);

onEmojiPagerPageChanged:

    void onPageChanged (AXEmojiPager emojiPager, AXEmojiBase base, int position);

PopupListener:

    void onDismiss();
    void onShow();
    void onKeyboardOpened(int height);
    void onKeyboardClosed();

Reemplazar cadena con emoji

primero necesitas obtener emoji Unicode:

String unicode = AXEmojiUtils.getEmojiUnicode(0x1f60d); // or Emoji.getUnicode();

O

ahora configúrelo en su vista con AXEmojiUtils.replaceWithEmojis.

Ejemplo: Establecer el título de ActionBar:

String title = "AXEmojiView " + unicode;
getSupportActionBar().setTitle(AXEmojiUtils.replaceWithEmojis(this, title, 20));

Resultado:

RecentManager y VariantManager

puede agregar su propio administrador reciente personalizado para emojis y pegatinas. implementar en RecentEmoji / RecentSticker

AXEmojiManager.setRecentEmoji(emojiRecentManager);
AXEmojiManager.setRecentSticker(stickerRecentManager);

Deshabilitar controladores recientes:

AXEmojiManager.getInstance().disableRecentManagers();

Visualización de variantes

¡también puede crear su propia VariantPopupView! pero no es necesario, el predeterminado también es bueno 🙂

La variante predeterminada:

Cargador de emoji

puede agregar un EmojiLoader personalizado con AXEmojiLoader:

AXEmojiManager.setEmojiLoader(new EmojiLoader(){
  @Override
  public void loadEmoji (AXEmojiImageView imageView,Emoji emoji){
   imageView.setImageDrawable(emoji.getDrawable(imageView.getContext());
  }
});

Pegatinas animadas (AXrLottie)

Ver AXrLottie

Descargar apk

  • Versión: 1.2.2
  • Última actualización: 31 de agosto de 2020

Download Apk

Autor

¡Un agradecimiento especial a Telegram! (¡Usando la última actualización de emoji de Telegram!)

TelegramID: @ KingAmir272

Copyright 2020 Amir Hossein Aghajari
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

.

Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *