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

Posted 摘星猿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spnnableBuilder 实现Android 表情 高亮字体 及 点击事件相关的知识,希望对你有一定的参考价值。

colorfulText

lib for spannableString

如果你对博客不赶兴趣

直接去下载

能干什么?

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


3、封装、分离 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

以上是关于spnnableBuilder 实现Android 表情 高亮字体 及 点击事件的主要内容,如果未能解决你的问题,请参考以下文章

android要实现直播功能哪个直播框架好用?

Android实现拨号功能

怎么在android实现退出功能

android怎么实现页面的左右滑动

android ScrollView实现原理,求助

Android是否可以实现静默安装模式