(转载) 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推荐到主页.荣 ... 
随机推荐
- caffe遇到的错误记录
			Caffe——一个多么方便的深度学习工具,为啥安装和使用起来的bug这么多呢!把痛苦的记忆记录下来,把希望留给后人. Caffe的万丈高楼(Net)是按照我们的设计图纸(prototxt),用Blob ... 
- <video> controlsList
			Audio/Video Updates in Chrome 58 <video controls controlsList="nofullscreen nodownload norem ... 
- Django开发之路 二(django的models表查询)
			django的models表查询 一.单表查询 (1) all(): 查询所有结果 # 返回的QuerySet类型 (2) filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 #返 ... 
- MFC+OpenGL可编程管线
			[github链接] 网上的代码大都是固定管线渲染的,今天下午整理了下,把setPixelFormat.初始化glew.创建GL 4,2 context等操作封装到一个MFC类OpenGLWidget ... 
- day12 字符编码
			计算机基础 启动应用程序 双击QQ 操作系统接受指令然后把该操作转化成0和1发送给CPU CPU接受指令然后把指令发送给内存 内存接受指令把指令发送给硬盘读取数据 QQ在内存中运行 写文本的流程 在记 ... 
- 路飞学城Python-Day23(practise)
			本章总结 练习题 什么是C/S架构? 互联网协议是什么?分别介绍五层协议中每一层的功能? 基于tcp协议通信,为何建立链接需要三次握手,而断开链接却需要四次挥手 为何基于tcp协议的通信比基于udp协 ... 
- jq——事件
			http://www.w3school.com.cn/jquery/jquery_ajax_intro.asp $(document),$(body) 加载事件: $(document).ready( ... 
- redis 篇 - set
			set 无序集合 sadd key value 127.0.0.1:6379[7]> sadd s 3 (integer) 1 127.0.0.1:6379[7]> smembers s ... 
- 【XSY2689】王子 - 网络流
			复活!qwq 题目来源:2018冬令营模拟测试赛(九) 题意: [背景描述] 不是所有王子都会遇见自己的中关村,主公,公主. 从前有个王子姓王,王王子遇到了一位美丽的公主,她的名字当然是公公主 ... 
- js异步队列之理解
			起因 最近看到一篇关于js异步执行顺序的解答,觉得有所收获,遂记录下来. marcotask和microtask js中异步队列可以分为两类,marcotask队列和microtask队列, marc ... 
