
android
文章平均质量分 92
HyHarden
大家一起摇啊摇啊摇,让我们一起摇摆着舞蹈。
展开
-
android异步消息处理机制
Android异步信息处理机制我们都知道android的ui更新操作都是在主线程执行的,但是很多时候我们都需要在子线程中执行一些费时的操作,以获取我们所需要的变更数据。很多刚入门的同学都容易犯的一个错误就是在子线程试图去更新Ui控件,这样做是被android禁止的,所以会出现崩溃的现象。Android的异步信息处理机制就是专门解决这个问题而诞生的。对于这个异步机制我们只需要知道四个对象原创 2015-11-19 20:40:04 · 532 阅读 · 0 评论 -
一个简单的例子带你了解jni流程
1、前言jni是java调用原生语言进行来发的一座桥梁,原生语言一般是指c,c++语言,即jni机制可以让java语言调用c,c++语言,也可以让c,c++语言调用java语言。这样的相互调用,互相结合,主要是出现在对性能要求较高的应用上。在android中,由于它的开发语言也是java,所以也可以利用原生语言进行开发,对jni的了解和使用有助于我们在做应用的时候,对于时间性能要求较高的代码段原创 2016-09-15 21:41:33 · 2577 阅读 · 0 评论 -
使用animator实现粒子动画效果
1、前言本文围绕着实现粒子放大效果,着重讲解android中涉及到动画缩放以及动画集的使用,并且会将讲解一些插值器相关的知识。阅读本文需要读者有一定的自定义View的基础知识,本文将不再讲解自定义View的相关知识,读者需要可以自行去学习,也可以阅读笔者的文章,自定义View的基本知识。2、着色器为了让效果的色彩比较的绚丽,需要让粒子(这里其实就是用小圆原创 2016-08-31 22:33:09 · 2339 阅读 · 0 评论 -
自定义ImageView实现局部截图功能
1、前言最近在做一个能够自选区域进行局部截图的功能,接下来,会给大家讲解,整个截图的实现过程。笔者这边实现的自选区域的形状是矩形,读者如果有需要,可以根据我给大家讲解的思路,修改成适合自己的截图工具。先来看看效果图2、效果图这里的图片是来自笔者对webView的截图产生的,读者可以根据自己的需要,替换上面的图片。通过拖原创 2016-08-29 17:44:11 · 5893 阅读 · 0 评论 -
对Binder的浅显分析及AIDL的使用
IInterface接口是所有涉及到Binder接口的基类,通常情况下,当我们定义一个继承了Binder类的子类的时候,该子类一定要实现一个继承了IInterface接口的接口(有的时候也可以直接用子类去实现IIterface接口)。IInterface接口里边只有一个待实现方法asBinder方法,用于返回与当前接口相关联的Binder的对象。这样太抽象不好理解,让我们跟着步骤一个一个来:原创 2016-07-13 17:11:25 · 3796 阅读 · 2 评论 -
fragment的使用以及fragment大家族解析
一、FragmentTransactionFragmentTransaction是一个定义了一系列关于fragment操作的抽象类。在调用FragmentManager对fragment进行添加、替换等操作时 ,都是通过事务的方式来启动的。所以对于FragmentTransaction的了解有助于在开发中更好的操作fragment的添加替换的操作。对于此类,有下面几个重要的方法原创 2016-07-28 23:31:34 · 2445 阅读 · 1 评论 -
通过webView与javascript交互来研究webView的特点
1、前言webView是android中用于展示简单的网页或者加载一些html格式的很好的选择,它提供了很多的操作上的封装但同时又不失去灵活性,因为他提供了webViewClient和webChromeClient这两个可自定义的类来进行对页面动作的不同产生不同的表现的行为。在hybrid app开发模式中,webView可用于和web网页交互的能力也是一个很突出的亮点,很多时原创 2016-08-16 22:57:22 · 1458 阅读 · 0 评论 -
Socket的分析与使用
一、ScoketOptionsSocketOptions是为Scoket定义的一个用于设置或者获取Socket各种属性(比如 连接超时,缓冲区大小......)的接口。这里面包含了很多重要的Socket属性信息以及两个get,set方法,了解它对于以后使用Socket进行连接通讯,可以更加得心应手。现在按照笔者认为的便于大家理解的顺序来讲解。①、设置SocketOp原创 2016-08-01 21:44:50 · 2667 阅读 · 0 评论 -
基于SQLiteDatabase使用ContentProvider共享数据
当我们的的应用数据需要给外界访问的时候,就需要跨进程通信。在Android中,如果进行数据共享,ContentProvider是最好的选择,它的实现很简单,并且底层封装好了Binder对象用于处理远程连接。在另一个应用中,如果想要共享当前应用的数据,只需要获取一个ContentResolver对象,然后通过Uri匹配就可以与当前应用的ContentProvider建立连接,之后对ContentRe原创 2016-07-20 13:07:29 · 3729 阅读 · 1 评论 -
activity生命周期详解
activity的生命周期可分为以下3种:(1)完整生命周期,始于onCreate终于onDestroy,所有的全局变量和控件初始化都应该在onCreate完成,在onDestroy应该释放所有的资源。(2)可见生命周期,始于onStart终于onStop,在这个生命周期里,activity可能不能和用户进行交互,但却是可见的,这两个方法会被调用多次。(3)前台生命周期,始于onResume终于onPause,此时activity位于屏幕的最上层并且可以和用户进行交互,这两个方法也会被频繁的调用。原创 2016-07-08 15:52:13 · 1501 阅读 · 0 评论 -
利用Messenger跨进程通信
在进行跨进程通信的时候,可能很多开发者一开始想到的就是AIDL。AIDL,中文名称是android接口描述语言,是android系统中用于进行跨进程通信必须了解的。至于如何生成远程对象进行AIDL通信,大家可以看我之前写的一篇文章------对Binder的浅显分析及AIDL的使用。但其实,如果我们进行的跨进程通信逻辑比较简单,我们完全没必要自己生成AIDL,因为android已经为开发者封装了一原创 2016-07-16 00:15:14 · 3811 阅读 · 1 评论 -
Android中图片的三级缓存策略
一、LruCacheLruCache是Android中提供的基于最近最少使用算法的缓存策略,它可以对一定数量的值持有强引用。最近最少使用算法体现在,当有一个值被访问的时候,这个值就会被移动到队列的对头,而当一个值添加的时候恰好达到LruCache申请的缓存空间,那么处于队尾的值就会被踢出队列,由于该值不再是缓存cache持有的对象,所以一旦垃圾回收器需要回收内存的时候,原创 2016-07-26 22:25:05 · 2857 阅读 · 3 评论 -
Intent的匹配规则
在intent中最主要的数据资料是:(1)action:即将要执行的活动,通常是用字符串表示,比如:“android.intent,action.VIEW“,但其实android已经定义好了大量常量,我们直接使用即可,比如Intent.ACTION_VIEW就是“android.intent,action.VIEW“的常量。(2)data:将被所执行的活动所处理的数据,通常用Uri的形式表示,在后面会有更详细的解析,这里先大概了解一下。原创 2016-07-09 15:34:38 · 1336 阅读 · 0 评论 -
Adapter大家族详解
在开发中,给数据容器视图适配数据是最经常用到的,最经常用的适配器有BaseAdapter,ArrayAdapter......,很多人用的都很熟悉了。虽然如此,我相信大部分人对Adpter适配器的大家族还是很模糊的,比如:很经常在实现一个Apdate子类的时候,不知道使用ArrayAdapter还是BaseAdapter好,因为对它们的区别不清楚,所以造成了选择误区。为了了解这个大家族,接下来会讲原创 2016-07-23 00:50:00 · 5067 阅读 · 0 评论 -
Serializable和Parcelable的解析与使用
很多情况下,我们都需要将一些数据对象序列化,因为要想操作系统识别对象数据,就必须要序列化成二进制数组,这在我们进行存储文件,操作文件数据,或者进行进程间的数据交流......很多底层的操作都是必须的。java和android都提供了可序列化的接口声明,在java中提供了Serializable接口,android中提供了Parcelable接口,这两者都可以用于声明一个对象,表明其是可序列化的。其中,前者实现起来简单,但是开销很大(因为底层实现进行了大量的读写操作)。后者实现复杂但是开销小,具体使用哪个需要原创 2016-07-11 12:25:31 · 949 阅读 · 0 评论 -
jni中java与原生代码通信规则
1、前言通过jni可以让java和原生语言进行通信,这个通信不仅仅是信息传递,还包括方法间的调用,参数的传递。但是由于java的数据类型和原生语言的数据类型还是有所差异的,并且它们的实现机制不同,所以就需要将java中的对象和原生语言对象一一对应起来。在这个对应过程中,其实是很繁琐并且开销很大的,所以一般会SWIG自动生成代码。但是为了学习这个过程,我们必须知道整个转换的过程是怎样的。原创 2016-09-18 14:49:52 · 1970 阅读 · 0 评论