麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Android > 正文

有關微博content的封裝實現詳解

2020-04-11 12:42:07
字體:
來源:轉載
供稿:網友
可以不用經過 Html.fromHtml 因為我的數據里面含有一點 html的標簽。所以經過html轉換了。
實現方法:
復制代碼 代碼如下:

TextView content = (TextView) convertView.findViewById(R.id.content);
content.setText(Html.fromHtml("<html><head>"+temp.get(position).getContent()+"</html></head>"));
CharSequence str = content.getText();
SpannableString spann = WeiboUtils.formatContentNoClick(str);
content.setText(spann);

具體的封裝如下:
復制代碼 代碼如下:

package com.lizheng.little.yiqu.utils;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.lizheng.little.yiqu.ui.ActWeiBoInfo;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.view.View;
public class WeiboUtils {
/**
* 將text中@某人、#某主題、http://網址的字體加亮,匹配的表情文字以表情顯示
* @param text
* @param context
* @return*/
public static SpannableString formatContent(CharSequence text,Context context) {
SpannableString spannableString = new SpannableString(text);
/*
* @[^//s::]+[:://s] 匹配@某人
* #([^//#|.]+)# 匹配#某主題 http://t//.cn///w+ 匹配網址
*/
Pattern pattern = Pattern.compile("@[^//s::]+[:://s]|#([^//#|.]+)#|http://t//.cn///w");
Matcher matcher = pattern.matcher(spannableString);
final Context mcontext = context;
while (matcher.find()) {
final String match=matcher.group();
if(match.startsWith("@")){ //@某人,加亮字體
spannableString.setSpan(new ClickableSpan()
{
// 在onClick方法中可以編寫單擊鏈接時要執行的動作
@Override
public void onClick(View widget)
{
String username = match;
username = username.replace("@", "");
username = username.replace(":", "");
username = username.trim();
Intent intent = new Intent(mcontext,XXX.class);
ConstantsUtil.clickName = username;
mcontext.startActivity(intent);//跳轉到用戶信息界面
}
}, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff),
matcher.start(), matcher.end(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
else if(match.startsWith("#")){ //#某主題
spannableString.setSpan(new ClickableSpan()
{
// 在onClick方法中可以編寫單擊鏈接時要執行的動作
@Override
public void onClick(View widget)
{
String theme = match;
theme = theme.replace("#", "");
theme = theme.trim();
ConstantsUtil.clickName = theme;
Intent intent = new Intent(mcontext,XXX.class);
mcontext.startActivity(intent);//跳轉到話題信息界面
}
}, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff),
matcher.start(), matcher.end(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
else if(match.startsWith("http://")){ //匹配網址
spannableString.setSpan(new ClickableSpan()
{
// 在onClick方法中可以編寫單擊鏈接時要執行的動作
@Override
public void onClick(View widget)
{
Uri uri = Uri.parse(match);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
mcontext.startActivity(intent);
}
}, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff),
matcher.start(), matcher.end(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return spannableString;
}
public static SpannableString formatContentNoClick(CharSequence text) {
SpannableString spannableString = new SpannableString(text);
/*
* @[^//s::]+[:://s] 匹配@某人
* #([^//#|.]+)# 匹配#某主題 http://t//.cn///w+ 匹配網址
*/
Pattern pattern = Pattern.compile("@[^//s::]+[:://s]|#([^//#|.]+)#|http://t//.cn///w");
Matcher matcher = pattern.matcher(spannableString);
while (matcher.find()) {
final String match=matcher.group();
if(match.startsWith("@")){ //@某人,加亮字體
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff),
matcher.start(), matcher.end(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
else if(match.startsWith("#")){ //#某主題
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff),
matcher.start(), matcher.end(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
else if(match.startsWith("http://")){ //匹配網址
spannableString.setSpan(new ForegroundColorSpan(0xff0077ff),
matcher.start(), matcher.end(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return spannableString;
}
public static long calculateWeiboLength(CharSequence c) {
double len = 0;
for (int i = 0; i < c.length(); i++) {
int temp = (int)c.charAt(i);
if (temp > 0 && temp < 127) {
len += 0.5;
}else{
len ++;
}
}
return Math.round(len);
}
}

自己封裝的dialog控件://www.companysz.com/article/32030.htm
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩欧美精品电影 | 国产毛片在线看 | 亚洲自拍第二页 | 亚洲影院在线播放 | 视频一区二区精品 | 久久99深爱久久99精品 | 久久99精品国产99久久6男男 | 国产色视频一区 | 欧美一级不卡视频 | 999精品久久久 | 黄色免费电影网址 | 黄色网址免费在线 | 操操影视| 精品亚洲在线 | 国产a级网站| 久综合| 久久国产中文字幕 | 爱高潮www亚洲精品 欧美黄色一级片视频 | 亚洲资源在线播放 | 亚洲啊v在线观看 | 精品国产一区二区三区久久久 | 草莓视频久久 | 欧美性生活区 | 萌白酱福利视频在线网站 | 欧美视屏一区二区 | 伊久在线 | 成人在线视频一区 | 色诱亚洲精品久久久久久 | 成年免费在线视频 | 欧美一级成人 | 一级一级一级一级毛片 | 亚洲性一区 | 成人午夜免费看 | 成人午夜视频网站 | 99seav| 射逼网站 | 成人一区二区三区在线 | 天天草夜夜爽 | 91久久久久久亚洲精品禁果 | 成年人激情在线 | 精品国产91久久久 |