(转载) TextView使用一些小技巧

本文主要讲一些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
- 上一篇关于扫码登录的一些问题
- 下一篇混合开发交互中遇到的一些问题
- 个人资料
(转载) TextView使用一些小技巧的更多相关文章
- 【转载】运维小技巧:使用ss命令代替 netstat
转自:https://www.91ri.org/12470.html ss是Socket Statistics的缩写. 顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类 ...
- [转载]Js小技巧||给input type=“password”的输入框赋默认值
http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...
- 【转载】PHP 开发者该知道的 5 个 Composer 小技巧
Composer是新一代的PHP依赖管理工具.其介绍和基本用法可以看这篇<Composer PHP依赖管理的新时代>.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方 ...
- GJM : Unity3D - UI - UI边缘流光特效小技巧 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- 【转载】Intellij IDEA神器居然还有这些小技巧
概述Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜.出于对Intellij IDEA的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的Intell ...
- [转载 java 技术栈] eclipse 阅读跟踪 Java 源码的几个小技巧!
本文基于Eclipse IDE,我们每天都使用的IDE其实提供了很多强大的功能,掌握它们,往往能够事半功倍. 1.Quick Type Hierarchy 快速查看类继承体系. 快捷键:Ctrl + ...
- hw小技巧(转载)
小弟也第一次参加hw,经过5天hw,确实也学到了许多的东西,但就本次分享而言,我分享一些我认为在hw里面值得注意的东西以及一些小技巧 0x01 信息收集 信息收集这个多西当然都是老生常谈了,你收集的东 ...
- iOS小技巧总结,绝对有你想要的
原文链接 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIV ...
- Android简易实战教程--第二十二话《自定义组合控件模拟qq登录下拉框和其中的一些”小技巧”》
转载此文章请注明出处:点击打开链接 http://blog.csdn.net/qq_32059827/article/details/52313516 首先,很荣幸此专栏能被CSDN推荐到主页.荣 ...
随机推荐
- python之--初始面向对象
阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...
- windows下安装reidis
下载windows下redis安装包 https://github.com/MSOpenTech/redis/releases 这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了. 切换 ...
- 七牛上图片总是net::ERR_NAME_NOT_RESOLVED
七牛上图片总是net::ERR_NAME_NOT_RESOLVED >> php这个答案描述的挺清楚的:http://www.goodpm.net/postreply/php/101000 ...
- Sphinx在windows下安装使用[支持中文全文检索]
原文地址:http://www.fuchaoqun.com/2008/11/sphinx-on-windows-xp/ 前 一阵子尝试使用了一下Sphinx,一个能够被各种语言(PHP/Python/ ...
- 用一个小的例子来说明为什么TCP采用三次握手才能保证连接成功
关于TCP的三次握手,有很多朋友还在疑惑为什么是三次,而不是两次,LZ想了一下用一个例子来说明最好. 场景: 办公室有一名前台(服务器),若干业务员(fork出来的进程) 客户(客户端) 为什么我 ...
- phpstorm中,光标变成一个长方红色块,如何调回来?
今天使用phpstorm,不知道碰到了什么,光标变成长方红色块(如图),搞半天终于调回来了,变回了细细的竖线,记录一下: 其实按一下insert键就可以了
- jQuery 文档操作
一.插入操作 1. 父元素.append(子元素) 追加某元素,在父元素中添加新的子元素, 子元素可以为: stirng / element (js对象) / jquery 元素 var oli = ...
- 【codeforces 812B】Sagheer, the Hausmeister
[题目链接]:http://codeforces.com/contest/812/problem/B [题意] 一个老大爷在一楼; 然后他有n楼的灯要关(最多n楼); 每楼有m个房间; 给出每个房间的 ...
- linux内核(四)内存管理单元MMU
1,基本概念 一个程序运行时没必要全部都同时装入内存,只需要把当前需要运行的部分装入内存即可,这样就使得一个大程序可以在较小的内存中运行,也使得内存中可以同时装入更多的程序并发执行,从用户角度看,该系 ...
- ASP.NET--Attribute定义及用法
1.Attribute定义 公共语言运行时允许添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .N ...