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!
AXEmojiPopupLayout
¡también puede crear un AXEmojiPopupLayout en lugar de AXEmojiPopup! Creo que AXEmojiPopupLayout tiene un mejor rendimiento.
- 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"/>
- 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.
.