2015-10-09 16:13 810人阅读 评论(0) 收藏 举报
 分类:
Android(20) 

本文主要讲一些TextView的使用技巧

TextView使用频率很高,大家也都很熟悉,讲几个开发中比较实用的小属性

1、TextView竖行使用:

比较笨点的宽度设置一个字的大小,然后singLine设置false

那么比较好简单一点就是设置Textview的ems属性,即:

Android:ems="1"(后面数字是一行显示的字符多少)

2、TextView链接点击:

比如你先要点击一个TextView,跳转到某个url,这样就可以给TextView设置

一个属性,即:android:autoLink (设置是否当文本为URL链接/email/电话

号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all))

3、TextView霓虹灯效果:

大家应该都知道跑马灯效果,就不赘述了,我讲一下霓虹灯的效果吧

首先定义一个计时器,定时器用于定时发消息改变TextView字体颜色

Timer timer = new Timer();
TimerTask task_neon = new TimerTask() {
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};
然后定义一个Handler,在这里面实现霓虹灯效果(也就是字体颜色改变)
handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
// 霓虹灯效果
TextView tv = (TextView) findViewById(R.id.text);
String neontext = content;
String notext = "重新键入";
String playtext = "";
if(flag){
playtext = "暂停";
}else{
playtext = "重播";
}
int len = neontext.length();
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> data1 = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> data2 = new ArrayList<Map<String, Object>>();
for (int i = 0; i < len; i++) {
Map<String, Object> target = new HashMap<String, Object>();
target.put("content", neontext.substring(i, i + 1));
target.put("color", setColor());
data.add(target);
}
for (int i = 0; i < 4; i++) {
Map<String, Object> target = new HashMap<String, Object>();
target.put("content", notext.substring(i, i + 1));
target.put("color", setColor());
data1.add(target);
}
for (int i = 0; i < 2; i++) {
Map<String, Object> target = new HashMap<String, Object>();
target.put("content", playtext.substring(i, i + 1));
target.put("color", setColor());
data2.add(target);
}
tv.setText(Utils.highlight(neontext, data));
sumbit.setText(Utils.highlight(notext, data1));
pause.setText(Utils.highlight(playtext, data2));
break;
}
super.handleMessage(msg);
}
}; timer.schedule(task_neon, 1000, 1000);
}
主要霓虹灯效果是使用Spannable实现的:
public static SpannableStringBuilder highlight(String wholeContent,
List<Map<String, Object>> data) {
SpannableStringBuilder spannable = new SpannableStringBuilder(
wholeContent); for (Map<String, Object> targetdata : data) {
Pattern p = Pattern.compile(targetdata.get("content").toString());
Matcher m = p.matcher(wholeContent);
while (m.find()) {
spannable.setSpan(
new ForegroundColorSpan(Integer.valueOf(targetdata.get("color").toString())),
m.start(), m.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
}
return spannable;
}

还有其他的好属性可以私信我哦,谢谢啦!
个人邮箱:jsmeli@163.com

 

 
1

0
 
  相关文章推荐
 
查看评论
  暂无评论

 
 
您还没有登录,请[登录][注册]
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
 
 
 
 
    个人资料

最新文章

  1. RabbitMQ Exchange &amp; Queue Design Trade-off
  2. 通过iTop Webservice接口丰富OQL的功能
  3. Android计数器的实现(倒计时)
  4. MVC中Action之间传值
  5. 好玩儿的expect
  6. RTL2832U+R820电视棒跟踪飞机轨迹教程(ADS-B)
  7. linux CentOS 系统下如何将php和mysql命令加入到环境变量中
  8. 【BZOJ】【1877】【SDOI2009】晨跑
  9. IOS委托设计模式(摘自IOS开发指南)
  10. Linux中断(interrupt)子系统
  11. 【从零学习openCV】opecv操作像素
  12. C# 基础控制台程序的创建,输出,输入,定义变量,变量赋值,值覆盖,值拼接,值打印
  13. [js高手之路] html5 canvas系列教程 - arc绘制曲线图形(曲线,弧线,圆形)
  14. asp.net mvc CodeFirst模式数据库迁移步骤
  15. [UWP]合体姿势不对的HeaderedContentControl
  16. hihoCoder 树结构判定(并查集)
  17. 【Python3爬虫】为什么你的博客没人看呢?
  18. Linux如何快速跳转到文档开头或者末尾
  19. IntelliJ配置SpringMVC提示“found:java.lang.String required:java.lang.String”
  20. javascript的use strict(使用严格模式)

热门文章

  1. POJ 2771 最大独立集 匈牙利算法
  2. Activity、Fragment、ViewPage
  3. PHP邮件发送库:Swiftmailer
  4. DirectUI界面编程(三)从XML文件中加载界面
  5. DevExpress Report 打印提示one or more margins are set outside the printable area of the page 问题解决
  6. Android studio关于点击事件后的页面跳转,选择完成后返回(onActivityResult)
  7. JAVA在线观看视频教程完整版
  8. hdu 1166 敌兵布阵 【线段树】
  9. QA小课堂:一个网站或者APP开发要多少钱
  10. 初见UDP_Client