`
l540151663
  • 浏览: 184954 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

SpannableString简介

 
阅读更多

参考链接:
http://www.cnblogs.com/jisheng/archive/2013/01/10/2854088.html
http://www.jianshu.com/p/d4349a4ca216

package com.lml.activity.spanablestrtest;

import android.content.res.Resources;
import android.graphics.BlurMaskFilter;
import android.graphics.Color;
import android.graphics.EmbossMaskFilter;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.support.v4.content.res.ResourcesCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.BackgroundColorSpan;
import android.text.style.ClickableSpan;
import android.text.style.DynamicDrawableSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.MaskFilterSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.ScaleXSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.SubscriptSpan;
import android.text.style.SuperscriptSpan;
import android.text.style.TextAppearanceSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv_show = (TextView)findViewById(R.id.tv_strshow);

        SpannableString spanText = getBackgroundColorSpanStr("BackgroundColor");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getForegroundColorSpanStr("ForegroundColor");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getBlurMaskSpanStr("BlurMask");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getEmbossMaskSpanStr("EmbossMask");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getStrikethroughSpanStr("Strikethrough");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getUnderlineSpanStr("Underline");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getAbsoluteSizeSpanStr("AbsoluteSize");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getDynamicDrawableSpanStr("DynamicDrawable");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getImageSpanStr("Image");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getScaleXSpanStr("ScaleX");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getStyleSpanStr("Style");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getClickableSpanStr("Clickable");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getSubscriptSpanStr("Subscript");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getSuperscriptSpanStr("Superscript");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getURLSpanStr("URLSpanStr");
        tv_show.append(spanText);
        tv_show.append("\n");

        spanText = getTextAppearanceSpanStr("TextAppearance");
        tv_show.append(spanText);

        tv_show.setMovementMethod(LinkMovementMethod.getInstance());

    }

    /**
     * 背景色
     * @param str
     * @return
     */
    private SpannableString getBackgroundColorSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new BackgroundColorSpan(Color.BLUE), 0, spanText.length(),
                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 前景色
     * @param str
     * @return
     */
    private SpannableString getForegroundColorSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new ForegroundColorSpan(Color.BLUE), 0, spanText.length(),
                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 模糊
     * @param str
     * @return
     */
    private SpannableString getBlurMaskSpanStr(String str) {
        SpannableString spanText = new SpannableString(str);
        MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, BlurMaskFilter.Blur.OUTER));
        spanText.setSpan(maskFilterSpan, 0, spanText.length(), Spannable.
                SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText;
    }

    /**
     * 浮雕
     * @param str
     * @return
     */
    private SpannableString getEmbossMaskSpanStr(String str) {
        SpannableString spanText = new SpannableString(str);
        //浮雕(EmbossMaskFilter)
        MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3));
        spanText.setSpan(maskFilterSpan, 0, spanText.length(), Spannable.
                SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText;
    }

    /**
     * 光栅
     * @param str
     * @return
     */
    private SpannableString getStrikethroughSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new StrikethroughSpan(), 0, spanText.length(), Spannable.
                SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 下划线
     * @param str
     * @return
     */
    private SpannableString getUnderlineSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new UnderlineSpan(), 0, spanText.length(), Spannable.
                SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 绝对大小
     * @param str
     * @return
     */
    private SpannableString getAbsoluteSizeSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(), Spannable.
                SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 动态图
     * @param str
     * @return
     */
    private SpannableString getDynamicDrawableSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        DynamicDrawableSpan drawableSpan = new DynamicDrawableSpan(
                DynamicDrawableSpan.ALIGN_BOTTOM) {
            @Override
            public Drawable getDrawable() {

                Drawable d = ResourcesCompat.getDrawable(getResources(), R.mipmap.ic_launcher, null);
                d.setBounds(0, 0, 50, 50);
                return d;
            }
        };
        spanText.setSpan(drawableSpan, 1, 2, Spannable.
                SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 图片
     * @param str
     * @return
     */
    private SpannableString getImageSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        Drawable d = ResourcesCompat.getDrawable(getResources(), R.mipmap.ic_launcher, null);
        d.setBounds(0, 0, 50, 50);
        spanText.setSpan(new ImageSpan(d), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 缩放
     * @param str
     * @return
     */
    private SpannableString getScaleXSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new ScaleXSpan(3.8f), 2, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 样式
     * @param str
     * @return
     */
    private SpannableString getStyleSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 2, 3,
                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 点击
     * @param str
     * @return
     */
    private SpannableString getClickableSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new ClickableSpan() {
                             @Override
                             public void onClick(View widget) {
                                 Toast.makeText(MainActivity.this,"onclick",Toast.LENGTH_SHORT).show();
                             }
                         }, 3, spanText.length(),
                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 下标
     * @param str
     * @return
     */
    private SpannableString getSubscriptSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new SubscriptSpan(), 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * 上标
     * @param str
     * @return
     */
    private SpannableString getSuperscriptSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new SuperscriptSpan(), 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

    /**
     * url
     * @param str
     * @return
     */
    private SpannableString getURLSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new URLSpan("http://www.baidu.com"), 3, spanText.length(),
                Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }


    /**
     * 文本外貌
     * @param str
     * @return
     */
    private SpannableString getTextAppearanceSpanStr(String str){
        SpannableString spanText = new SpannableString(str);
        spanText.setSpan(new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium),
                2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        return spanText ;
    }

}



  • 大小: 97.7 KB
分享到:
评论

相关推荐

    android的可变字符串使用例子

    一、SpannableString简介 SpannableString是Android SDK提供的一种字符串类,它允许我们在字符串的不同部分应用不同的格式,如字体大小、颜色、样式等。与普通的String不同,SpannableString允许我们动态地改变字符...

    TextView使用SpannableString设置复合文本 SpannableString实现TextView的链接效果

    一、简介 TextView 通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。Android 系统通过 SpannableString 类来对指定文本进行相关处理,具体有以下功能: 1. 背景色...

    Android下Button实现图文混排效果

    一、简介 在Android中,我们可以使用两种方式来实现图文混排效果,一种是使用android:drawableTop="@drawable/star"属性,另一种是使用SpannableString的ImageSpan。 1、使用android:drawableTop="@drawable/star...

    Android EditText实现输入表情

    一、简介 editText是TextView的子类,TextView能用的工具EditText都能用,这里就是editText利用SpannableString的ImageSpan实现输入表情的功能 类结构图: 二、方法 1)EditText利用SpannableString的ImageSpan...

    Spannable设置超链接

    #### 一、Spannable简介 在Android开发过程中,有时候我们需要为`TextView`中的部分文字添加超链接功能,比如将某些关键字设为可点击的链接,点击后触发相应的动作。这时候就需要用到`Spannable`来实现这种效果。 `...

    Retorfit的简单使用get请求,TextView的文本超链接识别源码

    ### Retrofit简介 Retrofit是由Square公司开发的一款Java和Kotlin的网络请求库,它通过注解的方式简化了HTTP接口的调用。Retrofit通过动态代理技术,将HTTP请求转换为Java方法调用,极大地提高了开发效率。 ### ...

    Android实现带动画效果的可点击展开TextView

    android:text="简介" android:textColor="#000000" android:textSize="20sp"/> android:id="@+id/tv_des" android:layout_width="match_parent" android:layout_height="wrap_content" android:...

    Android平台下的富文本解析器,支持Html和Markdown.rar

    3. `SpannableString`和`Html.fromHtml()`: Android SDK提供了`Html.fromHtml()`方法,可以将HTML字符串转换成`Spanned`对象,然后结合`SpannableString`在`TextView`中展示。然而,这个方法仅支持部分HTML标签,...

    Android仿新浪微博个人信息界面及其他效果

    首先,我们需要了解这个界面的基本构成,包括用户的头像、昵称、简介等信息的展示。这些信息通常通过网络接口获取,例如,我们可以调用新浪微博的开放API来获取用户信息,如`...

    可伸缩的文本控件ExpandTextView

    这种控件对于那些需要在有限空间内显示大量文本的应用场景特别有用,如评论、简介或帮助文档等。 首先,我们来看ExpandTextView的基本结构。它通常基于Android原生的TextView进行扩展,添加了额外的功能来实现收缩...

    解析页面链接

    SpannableString spanStr = new SpannableString(content); spanStr.setSpan(new ForegroundColorSpan(Color.BLUE), 0, content.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); output.replace(contentIndex, ...

    Android实现发送短信验证码倒计时功能示例

    一、简介: 开发中在用户注册或找回密码之类的功能,经常会遇到获取短信验证码,获取验证码后需要等待1分钟倒计时,这段时间是不能再次发送短信请求的。 效果图: 二、实现步骤: 1、一个关键类:CountDownTimer...

Global site tag (gtag.js) - Google Analytics