摘要: AndroidRichText帮助实现像QQ,微信一样的,一个TextView里既有文字又有表情又有图片的效果,采用插件化的框架,代码简单,可拓展性强。 阅读全文
posted @ 2016-01-25 20:12 丙丁 阅读(2443) 评论(0) 推荐(1) 编辑
摘要: 在开发过程中,有时候,需要这样一种控件,正常情况下不可见,不占用任何布局空间,只在某种特定情况下显示,这种情况下,我们使用一个普通的View,利用设置setVisibility(View.GONE)自然也可以实现,但是这样的话即使我们不需要显示View,Android也会将这个View渲染出来,... 阅读全文
posted @ 2014-05-05 17:20 丙丁 阅读(576) 评论(0) 推荐(0) 编辑
摘要: 做项目时候会遇到我们用WebView 打开一个web,希望这个web可以调用自己的一些方法,比如我们在进一个web页面,然后当我们点击web上的某个按钮时,希望能判断当前手机端是否已经登录,如果未登录,那么就会跳转到登录页面(登陆页面是另一个Activity)。这个时候,一个简单的做法就是在按钮动作... 阅读全文
posted @ 2014-04-27 20:07 丙丁 阅读(10857) 评论(1) 推荐(2) 编辑
摘要: 上面是Iphone备忘录的图,笔者之前接到一个需求是实现点击文本框里的数字,弹出一个类似上图的按钮,显示出复制,要求是这个按钮的位置必须是根据你点击的位置进行定位(为什么这么说,是因为我们不可能把按钮放在你点击的地方那样显示效果不太好,一般都是在点击的位置再往上一定的尺寸)。关于这个需求,在脑海里速... 阅读全文
posted @ 2014-04-14 11:10 丙丁 阅读(1598) 评论(0) 推荐(2) 编辑
摘要: AsyncTask 顾名思义,是在我们需要执行同步任务的时候使用,这个类可以做一些后台操作,然后将结果返回的UI来,因为这个类本身封装了Handler和Thread,所以我们不需要直接去操作这两个类,使用起来也非常简单。 源码里的注释说了,AsyncTask适合做一些short operations(短操作),如果你需要长时间地维持多线程,建议用Executor,ThreadPoolExecutor,FutureTask等类来实现。其实我们平常使用AsyncTask一般也都是在图片等小文件下载的时候使用。我们使用AsyncTask时需要写一个类继承AsyncTask(AsyncTask是个抽象 阅读全文
posted @ 2014-04-08 09:44 丙丁 阅读(1789) 评论(0) 推荐(0) 编辑
摘要: 有的时候可能想在TextView中添加一些图片,比如下图,发短信输入联系人时,要把联系人号码换成一个图片,但这个图片无法用固定的某张图,而是根据内容进行定制的,这更像一个view。当然,如果你不是view而是固定的图片,比如发信息时用表情图片替代特殊符号,那么实现起来会更加简单。又或许,你希望这个图片是可点击的。这里,笔者要介绍的就是怎么用一个自定义的ImageSpan来实现在文本里插入可点击的图片或View。在此之前,如果你还不了解SpannableString.setSpan(),不了解LinkMovementMethod是什么,建议先看下笔者的解析TextView中的URL等指定特殊字符 阅读全文
posted @ 2014-04-04 15:04 丙丁 阅读(6093) 评论(6) 推荐(4) 编辑
摘要: 使用TextView时,有时可能需要给予TextView里的特定字符串,比如URL,数字特别的样式,必希望能够添加点击事件。比如发短信时,文字里的url就可以点击直接打开浏览器,数字可以点击拨打电话。Android提供了SpannableString类来对TextView的内容进行处理,具体步骤:1.new一个SpannableString对象,传入需要显示在TextView上的内容;2.对内容进行处理(比如用正则表达式解析出URL或数字等等,并指定样式),这部分的核心就是调用SpannableString对象的setSpan()方法;public void setSpan(Object w. 阅读全文
posted @ 2014-04-03 14:53 丙丁 阅读(1858) 评论(1) 推荐(0) 编辑
摘要: Service 是Android四大组件之一,可以在不显示界面的情况下在后台运行。还有一个作用是通过AIDL来实现进程间通信。Service的启动方式Service的启动方式有两种,startService()与bindService()startService():onCreate->onStartCommand(旧版本为onStart),结束通过stopService(),回调onDestroy如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStartCommand()方法bindServi 阅读全文
posted @ 2014-04-01 20:23 丙丁 阅读(393) 评论(0) 推荐(0) 编辑
摘要: Android的Handler类应该是常用到的,多用于线程间的通信,以及子线程发送消息通知UI线程刷新View等等。这里我主要总结下我对整个消息传递机制,包括Handler,Looper,Message,MessageQueue类的理解。Looper类:每一个线程都只能拥有一个Looper对象,这里Android是通过将Looper对象设置为当前线程的线程局部变量(这里涉及到ThreadLocal类),可以通过调用Looper.prepare()方法来使当前线程拥有一个Looper对象(主线程不用调用,因为主线程本身已经是拥有Looper对象了)。这里贴出prepare()的源码public 阅读全文
posted @ 2014-04-01 10:08 丙丁 阅读(562) 评论(2) 推荐(1) 编辑