- 博客(39)
- 收藏
- 关注
转载 压缩代码和资源
要尽可能减小 APK 文件,您应该启用压缩来移除发布构建中未使用的代码和资源。此页面介绍如何执行该操作,以及如何指定要在构建时保留或舍弃的代码和资源。代码压缩通过 ProGuard 提供,ProGuard 会检测和移除封装应用中未使用的类、字段、方法和属性,包括自带代码库中的未使用项(这使其成为以变通方式解决 64k 引用限制的有用工具)。ProGuard 还可优化字节码,移除未使用的代码指令...
2018-08-07 12:29:18
527
原创 数字的比较,==与===比较
Kotlin 中没有基础数据类型,只有封装的数字类型,你每定义的一个变量,其实 Kotlin 帮你封装了一个对象,这样可以保证不会出现空指针。数字类型也一样,所有在比较两个数字的时候,就有比较数据大小和比较两个对象是否相同的区别了。在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小fun main(args: Array) { val a =
2017-07-12 07:19:28
639
原创 基本数据类型:Byte、Short、Int、Long
Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于Java的是,字符不属于数值类型,是一个独立的数据类型。Boolean是单独的一个数值类型.//1.Byte、Short、Int、Long写法一致,下面以Int举例使用//形式 var 变量名 :Int = 值;// 由于Kotlin 有类型推断,类型可以省略不写。简写:var
2017-07-10 07:36:11
1610
原创 val与var
Kotlin被谷歌推荐为Android开发第一语言,感兴趣的同学可以学一下,潜力很大。在学习Kotlin语法的时,大家需要提前搭建一个环境,可以参考这个网址:http://www.runoob.com/kotlin/kotlin-setup.html
2017-07-10 07:09:34
606
原创 Transition(Activity切换过渡动画)
Material Design 应用中的操作行为转换透过通用元素之间的移动和转换提供不同状态之间的视觉连接。 您可为进入、退出转换以及操作行为之间的共享元素转换指定定制动画。活动过渡提供了两种过渡类型:1,输入(进入):进入一个活动的效果2,退出(退出):退出一个活动的效果而这每种类型又分为普通和共享元素的过渡。普通转型爆炸 explode:从场景的中心移入或移出
2017-06-15 11:03:58
1511
原创 StateListAnimator视图状态改变动画
Material Design 中最基础的一条原则就是 'motion provides meaning',也就是当用户和你的 app 交互时应当提供合理的视觉反馈。标准做法是使用官方提供的 StateListDrawable 来为控件实现交互效果。StateListAnimator 是和 Material Design 一同在 API 21 引入的,可以用来方便的实现交互反馈的视觉效果,今天
2017-06-15 10:36:14
1176
原创 矢量图片添加动画 AnimatedVectorDrawable
矢量图的好处:1、文件占用空间小,且矢量图形文件与分辨率和图像大小无关,只与图像的复杂程度有关,图像文件所占的存储空间较小。2、图像放大不失真,.即矢量图可以无级缩放,对图形进行缩放,旋转或变形操作时,图形不会产生锯齿效果。AnimatedVectorDrawable 类别可让您为矢量图片的属性添加动画。您通常可以在 3 个 XML 文件中定义添加动画的矢量图片:在 res/d
2017-06-15 10:25:34
658
原创 曲线运动PathInterpolator /path
Material Design 中的动画利用曲线实现时间内插与空间移动模式。 利用 Android 5.0(API 级别 21)及更高版本,您可为动画定义定制时间曲线以及曲线运动模式。PathInterpolator 类别是一个基于贝塞尔曲线或 Path 对象的全新插入器。 此插入器在一个 1x1 的正方形内指定一个运动曲线,定位点位于 (0,0) 以及 (1,1),而控制点则使用构造函数参数
2017-06-15 10:13:01
2754
原创 揭露动画ViewAnimationUtils.createCircularReveal()
当您显示或隐藏一组 UI 元素时,揭露动画可为用户提供视觉连续性。ViewAnimationUtils.createCircularReveal() 方法让您能够为裁剪区域添加动画以揭露或隐藏视图。应用ViewAnimationUtils.createCircularReveal()方法可以去创建一个RevealAnimator动画。ViewAnimationUtils.createCir
2017-06-11 21:44:40
2031
原创 JVM、Dalvik、 ART三种虚拟机简单对比
Dalvik虚拟机存在于Android系统,JVM是java虚拟机,两者都是虚拟机。1. Dalvik 基于寄存器,而 JVM 基于栈。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。 2.Dalvik执行.dex格式的字节码,而JVM执行.class格式的字节码。3.Dalvik 和 Java SDK的SDK不同。4.Dalvik 和 Java 运行环境...
2017-06-11 20:35:04
588
原创 Android版本更新
Android1.1 2008 年9月发布的Android第一版Android1.5 Cupcake (纸杯蛋糕) 2009年4月30日,主要的更新如下: 1、拍摄/播放影片,并支持上传到Youtube 2、支持立体声蓝牙耳机,同时改善自动配对性能 3、最新的采用WebKit技术的浏览器,支持复制/贴上和页面中搜索 4、GPS性能大大提高 5、提供屏幕
2017-06-11 20:31:17
571
原创 rippleDrawable 触摸反馈
在5.0以上设备上实现波纹效果,可以通过给View设置background实现。官方已经有两个已经实现的效果供我们选择:1.?android:attr/selectableItemBackground在5.0以下的设备上没有波纹效果,是普通的变色效果。波纹效果会被限制在View的大小之内。2.?android:attr/selectableItemBackgroundBorderles
2017-06-11 19:47:10
548
原创 Android studio如何创建一个AIDL文件
1.创建一个工程,在java目录下的包内创建一个实现了Parcelable的类,比如Person。2.右键创建任意命名的AIDL文件,如Book.AIDL在main方法下自动生成一个aidl的文件夹,里边包含我们命名的.aidl文件,而且这里的包名和我们的java代码包名保持一致。3.这里的命名是可以任意修改的,这里我们修改为Person.aidl,和我
2017-06-06 17:59:30
2979
原创 序列化Serializable、Parcelable
1.SerializableSerializable是Java提供的一个序列化接口,它是一个空接口,为对象提供标准的序列化和反序列化的操作。使用方法简单,只需要提供一个类似下面的标示即可。private static final long serialVersionUID=6366644757585885L.简单的一个序列化例子:public class Data impleme
2017-06-06 11:35:42
467
原创 Bitmap采样
1.图片加载BitmapFactory类提供了四种加载的方法:decodeFile,decodeResource,decodeStream,decodeByteArray,分别支持从文件、资源、输入流以及字节数组来加载Bitmap对象,其中decodeFile,decodeResource又间接调用了decodeStream方法,这四类方法最终在Android的底层实现,对应着BitmapFa
2017-06-03 16:44:08
766
原创 JNI和NDK编程
Java JNI:Java Native Interface(Java本地接口),是为了方便Java调用C、C++D等本地代码所封装的一层接口。NDK是Android所提供的一个工具集合,通过NDK可以在Android中更加方便的通过JNI来访问本地代码,比如C/C++,NDK还提供了交叉编译器,开发人员只需简单修改mk文件就可以生成特定CPU平台的动态库。使用NDK的好处:1.提高代码的
2017-05-22 23:35:09
336
原创 multidex解决方法数越界
Android单个dex文件所能包含的最大方法数是65536,这个包括Android FrameWork、依赖jar包以及应用本身的所有方法。当应用的方法数达到65536之后,编译出现问题。UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 6
2017-05-22 15:28:59
421
原创 CrashHandle捕获崩溃信息
程序的崩溃是不可避免的,我们有时需要手动捕捉这些崩溃信息,上传服务器。Android提供了扑捉crash的方法。在Thread类中,有一个方法setDefaultUncaughtExceptionHandler; /** * Set the default handler invoked when a thread abruptly terminates * due to
2017-05-22 15:23:53
635
原创 BroadcastReceiver注册、发送、接收源码分析
BroadcastReceiver包括两方面,一是广播的注册过程,二是广播的发送和接收过程。首先要定义一个广播的接受者,只需要集成BroadcastReceiver,并重写它的onReceiver()方法就可以了,在该方法内不要做超过10ms的耗时工作。注册广播接受者有两种方式;一是在AndroidManifest文件中静态注册:二是在代码中动态注册,采用registerRecei
2017-05-19 20:00:03
1772
原创 Service进阶篇(bindService)
本篇是Service进阶篇(bindService),观看本篇文章,请务必先观看Service进阶篇(startService),本篇文章会在它分析的基础上,直接描述,会缺少一些细节。
2017-05-19 14:48:36
2624
1
原创 Service进阶篇(startService)
本篇是Service的进阶篇,为了防止Service源码分析篇幅太长,这里进一步分为Service进阶篇(startService)、Service进阶篇(bindService),本篇是Service进阶篇(startService)。
2017-05-19 09:54:57
585
原创 Activity源码分析
Activity启动过程是复杂的,可以直接跳过从ActivityStarter----->ActivityStack------------>ActivityStackSuperVisor,直接从ActivityStackSuperVisor的realStartActivtyLocked方法阅读。
2017-05-18 19:00:16
561
原创 Service基础篇
Service我分成两篇文章来讲解,一篇是Service的基础篇,主要谈Service的基本使用;另一篇是Service的进阶篇,从源码的角度分析。本篇是基础篇。
2017-05-17 16:44:03
283
原创 android进程、线程的优先级
有一个面试问题:IntentService的优先级比单纯的线程高,它不容易被系统杀死,可以执行高优先级的后台任务。为什么?它的背后有那些逻辑呢?IntentService的具体内容可以参照我的另外一篇文章:IntentService的源码分析,IntentService也是Service,后续就把IntentService改为Service了,更有代表性。表面看是涉及到两个知识点的问题,一是a
2017-05-17 12:03:32
806
原创 IntentService源码分析
IntentService继承了Service并且是一个抽象类,需要创建它的子类才能使用IntentService。它相对Service来说,是一个特殊的Service,它的内部使用HandleThread来执行服务,任务执行完,IntentService会自动退出。相对于Thread来说,它是一个服务,它的优先级高于线程,不容易被系统回收。一个面试问题:我要用服务下载apk,是用Inte
2017-05-16 23:57:32
422
原创 Service、IntentService下载Apk
文章本身是为了验证一道面试题:我要用服务下载apk,是用IntentService,还是Service好?为什么?同时也是回了回应我的文章:IntentService中所涉及的问题。文章的代码是从网络上找到,做了一些简单的优化和验证,需要的可以直接使用。
2017-05-16 22:44:49
713
原创 ThreadPoolExector(线程池)
线程池ThreadPoolExecutor的优点:1.重用线程池的线程,可以避免因为线程的创建和销毁所带来的性能开销。2.可以控制线程池的线程最大并发数量,避免线程之间因为互相抢占资源而造成的阻塞。3.能够对线程进行简单的管理,并提供定时执行以及间隔执行等功能。首先简单分析一下ThreadPoolExecutor的构成参数:public ThreadPoolExecutor(i
2017-05-16 11:30:06
2179
转载 Retrofit 2.0源码分析
Retrofit是什么:A type-safe HTTP client for Android and Java,简单的说它是一个HTTP请求工具,和Google开发的Volley功能上非常相似。
2017-05-15 12:13:17
346
转载 RxJava
我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJava 到底是什么?鉴于 RxJava 目前这种既火爆又神秘的现状,而我又在一年的使用过程中对 RxJava 有了一些
2017-05-15 09:45:54
318
原创 socket通信简单实现
1.所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄2.应用程序通常通过“套接字”向网络发送请求或者应答网络请求3.Socket有两种主要的操作方式:面向连接(TCP)的和无连接的(UDP)。4.Java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端。一个客户端要发起一次通信,首先必须知道运行服务器
2017-05-11 15:35:34
491
转载 Java常用数据结构
之前总结的知识,借鉴了很多人的文章,时间有点久忘记了文章的出处,抱歉了。文章梳理了Collection 接口、Set接口、Map接口、List接口他们之间的关系,同时也对他们的实现类有了一个简单的介绍,内容有:ArrayList、LinkedList、HashSet、LinkedHashSet、TreeSet、PriorityQueue、ArrayDeque、HashTable、HashMap、LinkedHashMap、WeakHashMap。
2017-05-10 21:46:06
388
原创 进程、线程
按照操作系统的描述:线程是CPU调度最小的执行单位,同时线程是一种有限的系统资源。进程一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。一个进程可以包含多个线程,两者是包含于被包含的关系。简单讲,一个程序至少有一个进程,一个进程至少有一个线程,线程是必须依赖进程的,不能独立执行,另外进程在执行过程中拥有独立的内存单元,而多个线程是共享内存。进程拥有独立的地址空间,即便崩溃了,在保护模式
2017-05-10 15:54:13
339
转载 String、StringBuffer、StringBuilder
String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM 的 GC 就会开始工作,那速
2017-05-10 15:40:40
237
原创 android 性能、内存优化
借鉴了很多别人的知识,也结合了一些自己在实际项目中遇到的内存溢出、OOM问题,罗列了常见的容易造成内存溢出、OOM的问题所在,也有一些建议,希望能帮助大家加深这块内容的理解。
2017-05-09 15:41:54
294
原创 android View
文章简单讲了Activity、PhoneWindow、DecorView、ViewGroup、View之间的联系,结合部分源码,着重讲解了View绘制的三个方法:onMeasure(...)、onLayout(...)、onDraw(...),希望对大家有所帮助。
2017-05-09 07:45:07
362
原创 android View coordinate(坐标)
这盘文章是为了帮助自己梳理有关View体系中涉及到坐标信息的,有这方面困扰的可以来看一看,内容简单,设计内容如下:left、top、right、bottom,top,x , y , translationX , translationY,getScrollX,getScrollY,getX、getY、getRawX,getRawY,getLocationInWindow(location),getLocationOnScreen(location)
2017-05-04 12:04:00
1371
原创 android animation
文章比较系统的介绍了Android 动画,是比较基础的内容,涉及到了AlphaAnimation、RotateAnimation、TranslateAnimation、LayoutAnimation、Interpolator、ValueAnimator 、ObjectAnimator 、PropertyValuesHolder、ViewPropertyAnimator、LayoutTransition、Keyframes、Rotate3dAnimation,以及一些自定义的动画,具体的内容可以下载完整的de
2017-04-27 08:24:42
524
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人