Android仿新浪微博、QQ空间等帖子显示(1)

 更新时间:2016年09月30日 16:04:39   作者:FlowLeaf  
这篇文章主要为大家详细介绍了Android仿新浪微博、QQ空间等帖子显示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。Android系统通过SpannableString类来对指定文本进行相关处理,实际应用中用的比较多的地方比如聊天时显示表情啊,朋友圈或社区中话题的显示、@好友显示和点击等等,关键字显示不同颜色……

1、BackgroundColorSpan 背景色

 SpannableString spanText = new SpannableString("BackgroundColorSpan");
 spanText.setSpan(new BackgroundColorSpan(Color.GREEN), 0, spanText.length(),
 Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
 mTVText.append("\n");
 mTVText.append(spanText);

2、ClickableSpan 文本可点击,有点击事件

 spannableString.setSpan(new ClickableSpan() {
    @Override
    public void onClick(View widget) {
     spanClickListener.onSpanClick(bean);
    }
    @Override
    public void updateDrawState(TextPaint ds) {
     super.updateDrawState(ds);
     //设置画笔属性
     ds.setUnderlineText(false);//默认有下划线
    }
   }, matcher.start(), end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tvTopic.setText(spannableString);
//如果想实现点击,必须要设置这个
tvTopic.setMovementMethod(LinkMovementMethod.getInstance());

3、ForegroundColorSpan 文本颜色(前景色)

spanText = new SpannableString("这是ForegroundColorSpan,看到了吗");
spanText.setSpan(new ForegroundColorSpan(Color.BLUE), 6, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

4、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)

spanText = new SpannableString("这是MaskFilterSpan,,看到了吗");
int length = spanText.length();
//模糊(BlurMaskFilter)
MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, Blur.OUTER));
spanText.setSpan(maskFilterSpan, 0, length - 10, Spannable.
SPAN_INCLUSIVE_EXCLUSIVE);
//浮雕(EmbossMaskFilter)
maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3));
spanText.setSpan(maskFilterSpan, length - 10, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

7、StrikethroughSpan 删除线(中划线)

spanText = new SpannableString("StrikethroughSpan");
spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

8、SuggestionSpan
相当于占位符,一般用在EditText输入框中。当双击此文本时,会弹出提示框选择一些建议(推荐的)文字,选中的文本将替换此占位符。在输入法上用的较多。

9、UnderlineSpan 下划线

spanText = new SpannableString("UnderlineSpan");
spanText.setSpan(new UnderlineSpan(), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

10、AbsoluteSizeSpan 绝对大小(文本字体)

spanText = new SpannableString("AbsoluteSizeSpan");
spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

11、DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。

DynamicDrawableSpan drawableSpan =
 new DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BASELINE) {
 @Override
 public Drawable getDrawable() {
  Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
  d.setBounds(0, 0, 50, 50);
  return d;
 }
};
DynamicDrawableSpan drawableSpan2 = new DynamicDrawableSpan(
DynamicDrawableSpan.ALIGN_BOTTOM) {
 @Override
 public Drawable getDrawable() {
   Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
   d.setBounds(0, 0, 50, 50);
    return d;
   }
  };
spanText.setSpan(drawableSpan, 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
spanText.setSpan(drawableSpan2, 7, 8, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

12、ImageSpan 图片

spanText = new SpannableString("ImageSpan");
Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
d.setBounds(0, 0, 50, 50);
spanText.setSpan(new ImageSpan(d), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

13、RelativeSizeSpan 相对大小(文本字体)

spanText = new SpannableString("RelativeSizeSpan");
//参数proportion:比例大小
spanText.setSpan(new RelativeSizeSpan(2.5f), 3, 4,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

14、ScaleXSpan 基于x轴缩放

spanText = new SpannableString("ScaleXSpan");
//参数proportion:比例大小
spanText.setSpan(new ScaleXSpan(3.8f), 3, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

15、StyleSpan 字体样式:粗体、斜体等

spanText = new SpannableString("StyleSpan");
spanText.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 3, 7,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

16、SubscriptSpan 下标(数学公式会用到)

spanText = new SpannableString("SubscriptSpan");
spanText.setSpan(new SubscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

17、SuperscriptSpan 上标(数学公式会用到)

spanText = new SpannableString("SuperscriptSpan");
spanText.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

18、TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色)

spanText = new SpannableString("TextAppearanceSpan");
//若需自定义TextAppearance,可以在系统样式上进行修改
spanText.setSpan(new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium),
 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

19、TypefaceSpan 文本字体

spanText = new SpannableString("TypefaceSpan");
spanText.setSpan(new TypefaceSpan("monospace"), 3, 10,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);

20、URLSpan 文本超链接

spanText = new SpannableString("URLSpan");
spanText.setSpan(new URLSpan("http://blog.csdn.net/u011102153"), 10, spanText.length(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
mTVText.append("\n");
mTVText.append(spanText);
//让URLSpan可以点击
mTVText.setMovementMethod(new LinkMovementMethod());

下载:https://github.com/LineChen/SpannableStringDemo

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android仿正点闹钟时间齿轮滑动效果

    Android仿正点闹钟时间齿轮滑动效果

    这篇文章主要为大家详细介绍了Android仿正点闹钟时间齿轮滑动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Android实现带页面切换的锁屏功能

    Android实现带页面切换的锁屏功能

    这篇文章主要为大家详细介绍了Android实现带页面切换的锁屏功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Android实现一个包含表格的图标库实例代码

    Android实现一个包含表格的图标库实例代码

    这篇文章主要介绍了Android实现一个包含表格的图标库的实例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Android编程实现动态更新ListView的方法

    Android编程实现动态更新ListView的方法

    这篇文章主要介绍了Android编程实现动态更新ListView的方法,结合实例形式详细分析了ListView的布局及动态更新实现方法,需要的朋友可以参考下
    2016-02-02
  • Android启动优化之延时加载的步骤详解

    Android启动优化之延时加载的步骤详解

    这篇文章主要给大家介绍了关于Android启动优化之延时加载的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • Android使用GridLayout绘制自定义日历控件

    Android使用GridLayout绘制自定义日历控件

    这篇文章主要为大家详细介绍了Android使用GridLayout绘制自定义日历控件的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Android在WebView中调用系统下载的方法

    Android在WebView中调用系统下载的方法

    这篇文章主要为大家详细介绍了Android在WebView中调用系统下载的简单使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Android 高仿微信支付数字键盘功能

    Android 高仿微信支付数字键盘功能

    现在很多app的支付、输入密码功能,都是使用自定义数字键盘,方便实用。下面本文给大家带来了Android 高仿微信支付数字键盘功能,非常不错,感兴趣的朋友一起学习吧
    2016-08-08
  • 使用RecylerView完成拖动排序高仿qq侧滑删除功能

    使用RecylerView完成拖动排序高仿qq侧滑删除功能

    最近在做一个android项目,使用到Recylerview完成拖动排序,侧滑删除功能,今天小编把思路分享到脚本之家平台,供大家学习
    2016-10-10
  • Android中的深度链接技术实战

    Android中的深度链接技术实战

    本文主要介绍了Android中的深度链接技术实战,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论