欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

有關微博content的封裝實現(xiàn)詳解

 更新時間:2012年11月20日 16:39:47   作者:  
本文將詳細介紹關于微博content的封裝實現(xiàn),需要的朋友可以參考下
可以不用經(jīng)過 Html.fromHtml 因為我的數(shù)據(jù)里面含有一點 html的標簽。所以經(jīng)過html轉(zhuǎn)換了。
實現(xiàn)方法:
復制代碼 代碼如下:

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://網(wǎng)址的字體加亮,匹配的表情文字以表情顯示
* @param text
* @param context
* @return*/
public static SpannableString formatContent(CharSequence text,Context context) {
SpannableString spannableString = new SpannableString(text);
/*
* @[^\\s::]+[::\\s] 匹配@某人
* #([^\\#|.]+)# 匹配#某主題 http://t\\.cn/\\w+ 匹配網(wǎng)址
*/
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方法中可以編寫單擊鏈接時要執(zhí)行的動作
@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);//跳轉(zhuǎn)到用戶信息界面
}
}, 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方法中可以編寫單擊鏈接時要執(zhí)行的動作
@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);//跳轉(zhuǎn)到話題信息界面
}
}, 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://")){ //匹配網(wǎng)址
spannableString.setSpan(new ClickableSpan()
{
// 在onClick方法中可以編寫單擊鏈接時要執(zhí)行的動作
@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+ 匹配網(wǎng)址
*/
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://")){ //匹配網(wǎng)址
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控件:http://www.dbjr.com.cn/article/32030.htm

相關文章

  • Android 自定義view模板并實現(xiàn)點擊事件的回調(diào)

    Android 自定義view模板并實現(xiàn)點擊事件的回調(diào)

    這篇文章主要介紹了Android 自定義view模板并實現(xiàn)點擊事件的回調(diào)的相關資料,需要的朋友可以參考下
    2017-01-01
  • OpenGL ES渲染管線概述(一)

    OpenGL ES渲染管線概述(一)

    這篇文章主要為大家詳細介紹了OpenGL ES渲染管線的簡單概述,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 聊一聊Android中的StateListAnimator

    聊一聊Android中的StateListAnimator

    這篇文章主要給大家介紹了關于Android中StateListAnimator的相關資料,文中通過示例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-12-12
  • Android以對話框形式制作數(shù)字軟鍵盤示例

    Android以對話框形式制作數(shù)字軟鍵盤示例

    大家好,本篇文章主要講的是Android以對話框形式制作數(shù)字軟鍵盤示例,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Android動畫之補間動畫(Tween Animation)基礎學習

    Android動畫之補間動畫(Tween Animation)基礎學習

    補間動畫是指定開始和結(jié)束的圖像狀態(tài),自動生成需要顯示的過度圖像的動畫。補間動畫又分為四種:移動,縮放,旋轉(zhuǎn),通明度等。下面就來給大家一篇關于Android中補間動畫的基礎知識,有需要的可以參考學習。
    2016-09-09
  • Android布局自定義Shap圓形ImageView可以單獨設置背景與圖片

    Android布局自定義Shap圓形ImageView可以單獨設置背景與圖片

    這篇文章主要介紹了Android布局自定義Shap圓形ImageView可以單獨設置背景與圖片 的相關資料,需要的朋友可以參考下
    2016-01-01
  • Android高仿京東垂直循環(huán)滾動新聞欄

    Android高仿京東垂直循環(huán)滾動新聞欄

    通過自定義的LinearLayout,并且textView能夠循環(huán)垂直滾動,而且條目可以點擊,顯示區(qū)域最多顯示2個條目,并且還有交替的屬性垂直移動的動畫效果,通過線程來控制滾動的實現(xiàn)
    2016-03-03
  • Android 常用log 關鍵字

    Android 常用log 關鍵字

    本文給大家分享android常用的log關鍵字,感興趣的朋友一起看看吧
    2017-09-09
  • Android常用對話框使用大全

    Android常用對話框使用大全

    我們隨處可見對話框,該怎么制作?這篇文章主要為大家詳細介紹了Android常用對話框使用大全,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Android之自定義實現(xiàn)BaseAdapter(通用適配器二)

    Android之自定義實現(xiàn)BaseAdapter(通用適配器二)

    這篇文章主要為大家詳細介紹了Android之自定義實現(xiàn)BaseAdapter通用適配器第二篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評論