Android开源 自定义emoji键盘,EmojiPack v2.1版本

目录

一,简介

二、安装

[添加jitpack 仓库](#添加jitpack 仓库)

添加依赖:

混淆规则:

三、使用

1、一次性配置emoji显示处理

二、emoji的自定义键盘的使用


一,简介

EmojiPack 当前已提供emoji的显示和emoji的选择自定义键盘,在emoji显示这一方面,大量的其他框架使用了自定义view来实现emoji的显示,EmojiPack 也是如此实现,但是在实际开发时,开发人员,将不在需要大量使用EmojiPack 内的自定义view,只需要在activity内完成一次性配置即可,所以EmojiPack的兼容性非常强,在使用EmojiPack时不再需要开发人员大量替换原本的显示控件,提高开发效率和减少bug的产生。

EmojiPack的键盘风格采用了当前APP市场常用emoji键盘风格,但有所区别,把最近使用的emoji单独成一项,在开发使用时做了一定的约束,虽然使用时会有部分限制,但是却可以减少开发人员关注的事情和部分逻辑处理。

二、安装

添加jitpack 仓库

Android Gradle Plugin 为 v7.1.0 以下版本:进入项目根目录,打开 "build.gradle" 文件,在 "allprojects" 中加入如下代码:

...

allprojects {

repositories {

maven { url 'https://jitpack.io' }

mavenCentral()

google()

}

}

当您的 Android Gradle Plugin 为 v7.1.0 或以上版本:进入项目根目录,打开 "settings.gradle" 文件,在 "dependencyResolutionManagement" 中加入如下代码:

...

dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)

repositories {

maven { url 'https://jitpack.io' }

mavenCentral()

google()

}

}

添加依赖:

进入 "app" 目录,打开 "build.gradle" 文件,在 "dependencies" 中添加 :

...

dependencies {

...

implementation "com.gitee.ym521:emojipack:2.1.0"

}

混淆规则:

在 "proguard-rules.pro" 文件中,为 EmojiPack 添加混淆的配置:

-keep class com.ym521.emojipack.**{*;}

三、使用

1、一次性配置emoji显示处理

复制代码
EmojiPackHelper.activity(this).install()

调用注意,一定要在activity的onCreate()的 super.onCreate() 回调之前调用:

kotlin示例

Kotlin 复制代码
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        EmojiPackHelper.activity(this).install()
        super.onCreate(savedInstanceState)
    }
}

Java 示例

java 复制代码
public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        EmojiPackHelper.activity(this).install();
        super.onCreate(savedInstanceState);
    }
}

注意:EmojiPackHelper.activity(activity).install()的参数activity必须是AppCompatActivity或者继承其的子类。

二、emoji的自定义键盘的使用

val emoji:EmojiPackKeyBoard.Builder= EmojiPackKeyBoard.build(this)

.setInputView(viewBind.etIput) //EditText 输入框

.bindView(viewBind.flEmoji) //FrameLayout 展示键盘容器View

emoji.show() //显示emoji键盘

emoji.hide()

调用注意:EmojiPack暂未实现根据Android自带键盘的状态来改变自己的键盘状态,所有判断Android自带键盘显示后关闭emojipack键盘需要开发人员自行处理;

EmojiPack会在Android自带键盘显示状态下去先关闭它,然后显示自己,这个不需要开发人员处理。

kotlin示例

Kotlin 复制代码
class MainActivity : AppCompatActivity() {

    private lateinit var viewBind:ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        EmojiPackHelper.activity(this).install()
        super.onCreate(savedInstanceState)
        viewBind = ActivityMainBinding.inflate(layoutInflater)
        setContentView(viewBind.root)
        val emoji = EmojiPackKeyBoard.build(this)
            .setInputView(viewBind.etIput)
            .bindView(viewBind.flEmoji)
        viewBind.tvEmoji.setOnClickListener {
            it.isSelected = !it.isSelected
            if (it.isSelected) {
                emoji.show()
            } else {
                emoji.hide()
            }
        }
    }
}

Java 示例

java 复制代码
ublic class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        EmojiPackHelper.activity(this).install();
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText etInput = findViewById(R.id.etIput);
        FrameLayout flEmoji = findViewById(R.id.flEmoji);
        TextView tvEmoji = findViewById(R.id.tvEmoji);

        EmojiPackKeyBoard.Builder emoji= EmojiPackKeyBoard.build(this)
                .setInputView(etInput)
                .bindView(flEmoji);
        tvEmoji.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                v.setSelected(!v.isSelected());
                if (v.isSelected()) {
                    emoji.show();
                } else {
                    emoji.hide();
                } 
            }
        }); 
    }
}

++如果对您有一些意义,希望您给博主一些鼓励(点赞、关注、收藏),如果这个EmojiPack有BUG欢迎大家提出。++

相关推荐
CoderJia程序员甲40 分钟前
GitHub 热榜项目 - 日榜(2025-09-03)
ai·开源·github·开源项目·github热榜
用户0273851840261 小时前
[Android]RecycleView的item用法
android
老马啸西风1 小时前
sensitive-word 敏感词性能提升14倍优化全过程 v0.28.0
安全·开源·nlp·word·敏感词·sensitive-word
前行的小黑炭2 小时前
Android :为APK注入“脂肪”,论Android垃圾代码在安全加固中的作用
android·kotlin
帅得不敢出门3 小时前
Docker安装Ubuntu搭建Android SDK编译环境
android·ubuntu·docker
tangweiguo030519873 小时前
Android Kotlin 动态注册 Broadcast 的完整封装方案
android·kotlin
fatiaozhang95273 小时前
浪潮CD1000-移动云电脑-RK3528芯片-2+32G-安卓9-2种开启ADB ROOT刷机教程方法
android·网络·adb·电脑·电视盒子·刷机固件·机顶盒刷机
前行的小黑炭4 小时前
Android 不同构建模式下使用不同类的例子:如何在debug模式和release模式,让其使用不同的类呢?
android·kotlin·gradle
andyguo4 小时前
AI模型测评平台工程化实战十二讲(第一讲:从手工测试到系统化的觉醒)
android
2501_915921434 小时前
小团队如何高效完成 uni-app iOS 上架,从分工到工具组合的实战经验
android·ios·小程序·uni-app·cocoa·iphone·webview