spnnableBuilder 实现Android 表情 高亮字体 及 点击事件

colorfulText

lib for spannableString

如果你对博客不赶兴趣

直接去下载

能干什么?

1、利用SpannableString 、SpannableBuilder、ClickableSpan 实现TextView 部分字符高亮 、表情替换
1、 封装 spannableString 的功能 实现 文字部分字体 、换色 、背景 、style、下划线、删除线、替换图片、插入图片 等功能
部分字体高亮
表情替换
2、封装、分离 TextView 部分字体内容点击事件及TextView 点击事件

集成

allprojects {
    repositories {
        jcenter()
    }
}
dependencies {
    implementation 'org.zhx.common:colorfulText:1.0.0'
 }

非Androidx 项目 :

gradle.properties中 添加:

android.useAndroidX=true
android.enableJetifier=true

单一 属性 修改

Builder builder = new Builder(this)
               .source("颜色大小背景粗细插入图片中划线下划线点击")
               .target("颜色")// 变色的 文字
               .textColor(R.color.colorAccent);
       TextView textView = findViewById(R.id.test_text1);
       builder.bind(textView);

多属性 修改

Builder builder = new Builder(this)
               .targets("点击")// 变色的 文字
               .textColor(R.color.colorPrimary)
               .pressdColor(R.color.colorAccent)
               .spanClick(new TargetClick() {
                   @Override
                   public void onClick(String target) {
                       Toast.makeText(MainActivity.this, target, Toast.LENGTH_SHORT).show();
                   }
               });

       Builder builder1 = new Builder(this)
               .targets("颜色")// 变色的 文字
               .textColor(R.color.colorAccent)
               .pressdColor(R.color.colorPrimary)
               .spanClick(new TargetClick() {
                   @Override
                   public void onClick(String target) {
                       Toast.makeText(MainActivity.this, target, Toast.LENGTH_SHORT).show();
                   }
               });
       //.......所有builder 都可以叠加
       TextView textView = findViewById(R.id.test_text7);
       ColorfulText text = new ColorfulText();
       text.init("颜色大小背景粗细插入图片中划线下划线点击");
       text.onClickListener = new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               Toast.makeText(MainActivity.this, "textView", Toast.LENGTH_SHORT).show();
           }
       };
       //...............所有builder 都可以叠加
       text.creat(builder, builder1);
       text.into(textView);

表情 替换 按指定的 正则表达式替换

 Builder builder = new Builder(this);
        builder.source("发送表情[色][色][色][色][吉他][吉]");
        builder.pattenStr("\\[[^\\]]+\\]", new OnPatternFind() {
            @Override
            public int onFind(String target) {
                Log.i("!!!!", target);
                return "[色]".equals(target) ? R.mipmap.emoji_02 : R.mipmap.emoji_107;
            }
        });
        TextView textView = findViewById(R.id.test_text11);
        builder.bind(textView);

多关键字 修改

TextView textView = findViewById(R.id.test_text6);
        Builder builder = new Builder(this)
                .source("颜色大小背景粗细插入图片中划线下划线点击")
                .targets("点击", "颜色")// 变色的 文字
                .textColor(R.color.colorPrimary)
                .pressdColor(R.color.colorAccent)
                .spanClick(new TargetClick() {
                    @Override
                    public void onClick(String target) {
                        Toast.makeText(MainActivity.this, target, Toast.LENGTH_SHORT).show();
                    }
                });

        builder.bind(textView);

未完待续 查看demo

你可能感兴趣的:(android,Android,表情,SpannableString,SpannableString,SpannableBuilde,表情,ClickableSpan)