- 博客(76)
- 资源 (1)
- 收藏
- 关注

原创 简化高仿以及源码分析Android 5.0的CardView
需求: 为了实现定制化的CardView效果,想要定制每一个角落都是圆弧或者直角的需求,需要了解CardView的绘制原理。 CardView核心思想:像版本控制就不讲了,只分析如何绘制圆角和阴影的,以下是源码的注释,整体看起来很复杂,但核心步骤就几行代码:主要涉及这个类: RoundRectDrawableWithShadow public void draw(Canvas canvas)...
2018-03-08 17:28:59
644
转载 Linux上如何使用Tomcat绑定域名
找到 Connector port="8080“ 改成 Connector port="80"转载自:https://www.jianshu.com/p/e5f38512a728。其中 www.189hall.cn 处填写你的域名,appBase="商业转载请联系作者获得授权,非商业转载请注明出处。打开tomcat/conf/server.xml。2、配置你的tomcat的默认端口为:80。文件夹,然后将你的网站的文件全部移到。1、首先域名要先绑定到你的服务器上。" 处,填写的是你的网站的根目录。
2022-11-29 14:35:06
1233
转载 Ndk jni编译so,亲测可用~_~
https://blog.youkuaiyun.com/qq_35071078/article/details/70502481使用ndk-build构建Jnindk-build是什么ndk-build 文件是 Android NDK r4 中引入的一个 shell 脚本。其用途是调用正确的 NDK 构建脚本。可以用这个命令来生成.so文件。ndk-build如何使用当你想使用该命令将.cpp/...
2019-08-13 20:16:42
273
原创 mac Android studio快捷键修改 左键查看源码 总弹出右键菜单
在mac中使用Android studio,需要进入某一个类时要使用ctrl+左键来进入,但是这个又是系统右键的快捷键,所以我们需要覆盖一下快捷键的设置。KeyMap中搜索Declaration,点击Add Mouse Shortcut,添加cmd+左键,即可完成覆盖,以后再也不会弹出右键的提示了。...
2019-05-06 08:14:28
1303
原创 从屏幕脉冲角度彻底理解属性动画原理
一.有个细节,就是设置不同差值器或者估值的,可以定义一个接口,不同的差值器比如线性插值器估值器,定义好,在主要也就是上层实现动画的时候,直接调用不同的差值器就行了,因为上层的需求就是一个插值器,调用的设置不同的差值器就行了,面向接口编程。二.整个动画原理流程:1.先明白2个概念,帧刷新率和屏幕刷新率,帧刷新率相当于在咱的应用中,经过cpu执行测量,布局和绘制流程,对图像转换成文理,再经过g...
2019-04-15 08:12:39
538
转载 Android四大组件:BroadcastReceiver史上最全面解析
链接:https://www.jianshu.com/p/ca3d87a4cdf3前言BroadcastReceiver(广播接收器),属于 Android 四大组件之一 在 Android 开发中,BroadcastReceiver 的应用场景非常多 今天,我将详细讲解关于BroadcastReceiver的一切相关知识目录示意图1. 定义即 广播,是一个全局的监听...
2019-03-20 23:00:59
242
转载 Handler是怎么做到消息延时发送的
以handler.postDelayed()为例:它的调用逻辑是这样的:public final boolean postDelayed(Runnable r, long delayMillis) { return sendMessageDelayed(getPostMessage(r), delayMillis); }public final boo...
2019-03-20 22:38:18
2561
转载 Android Studio中使用AIDL简单示例
这两天在学习aidl跨进程调用,研究了一天终于写出了个helloword。。做下记录吧。根据官方提供的指南,开发aidl跨进程调用,主要分以下步骤:1.创建.aidl文件-该文件(YourInterface.aidl)定义了客户端可用的方法和数据的接口。2.在makefile文件中加入.aidl文件-(Eclipse中的ADT插件提供管理功能)Android包括名为AIDL的编译器,位于t...
2019-03-20 22:22:43
2590
转载 Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
app程序入口中为主线程准备好了消息队列而根据Looper.loop()源码可知里面是一个死循环在遍历消息队列取消息而且并也没看见哪里有相关代码为这个死循环准备了一个新线程去运转,但是主线程却并不会因为Looper.loop()中的这个死循环卡死,为什么呢?像Activity的生命周期这些方法这些都是在主线程里执行的吧,那这些生命周期方法是怎么实现在死循环体外能够执行起来的?...
2019-03-20 22:03:55
238
转载 Activity的四种启动模式应用场景
原文:https://blog.youkuaiyun.com/black_bird_cn/article/details/79764794挺好:https://blog.youkuaiyun.com/freekiteyu/article/details/69523967在这金三银四的时间里一个哥们忽然一本正经的问我Activity的启动模式和具体的应用模式;我也一想是啊,平是不太注意结果到了 关键的时刻卡壳了,...
2019-03-19 11:31:27
620
转载 android activity管理(二)之Activity(ActivityClientRecord)生命周期管理
原文:https://blog.youkuaiyun.com/tonyandroid1984/article/details/71046368 tonyandroid1984生命周期的管理,其实客户端和服务端来回调用,比如生命周期开启一个,就要暂停上一个,但这个同步是怎么做的,有待于研究。ActivityRecord是系统AMS的activity记录表,每一个ActivityRecord对应一...
2019-03-18 22:31:07
1349
转载 如何在面试中介绍自己的项目经验
转自:https://blog.youkuaiyun.com/yelvgou9995/article/details/88319372在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果。第一印...
2019-03-10 15:49:56
519
原创 viewpager的PageTransformer采坑
网上找了几个帖子,有几个需要几下的地方:1.mViewCard.setPageMargin(ScreenUtil.dp2px(10));//设置viewpage之间的间距这个是设置viewpager页面的间距,一定要转换成px;这个是正确的间距。2.布局文件要设置左右边距,父布局和viewpager都要设置android:clipChildren=false,以便在布局之外显示页面...
2019-01-29 16:34:23
829
转载 堆排序
堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素。1. 若array[0,...,n-1]表示一颗完全二叉树的顺序存储模式,则双亲节点指针和孩子结点指针之间的内在关系如下: 任意一节点指针 i:父节点:i==0 ? null ...
2018-04-14 15:53:01
299
转载 KMP算法
字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直...
2018-04-13 18:57:33
186
原创 应用中修改多个getDrawable的相同资源id的问题分析
记录下遇到的问题:程序中通过getDrawable加载统一资源,这个资源会在很多页面或者一个页面的不同地方使用,而当修改某一个地方的drawable的颜色等属性时,其他地方的该资源也同时变化了。public void changeDrawableColor (int color) { Drawable bgDrawable = context.getResources().getD...
2018-03-31 19:02:48
247
转载 【Android 性能优化】—— 详解内存优化的来龙去脉
APP内存的使用,是评价一款应用性能高低的一个重要指标。虽然现在智能手机的内存越来越大,但是一个好的应用应该将效率发挥到极致,精益求精。本文是【Android 性能优化】系列的第二篇文章,我们在第一篇【Android 性能优化】—— UI篇中主要介绍了Android界面的优化的原理以及方法,这一篇中我们将着重介绍Android的内存优化。本文的篇幅很长,但是请不要嫌烦,因为每看一节,你就多了一份在...
2018-03-08 17:49:19
481
转载 OkHttp3连接建立过程分析
如我们前面在 OkHttp3 HTTP请求执行流程分析 中的分析,OkHttp3通过Interceptor链来执行HTTP请求,整体的执行过程大体如下:这些Interceptor中每一个的职责,这里不再赘述。在OkHttp3中,StreamAllocation是用来建立执行HTTP请求所需网络设施的组件,如其名字所显示的那样,分配Stream。但它具体做的事情根据是否设置了代理,以及请求的类型,如...
2018-02-26 15:16:06
3308
转载 Android Service完全解析,关于服务你所需知道的一切(上和下)
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/11952435相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了。Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑,
2017-11-28 11:33:39
8783
1
转载 花式写单例之单例的六种写法
一、前言 单例模式是一种常用的设计模式,其定义是单例对象类只允许一个实例存在,实现的核心原理是构造函数私有化。使用单例可以节省内存开销,也是现实场景中的一种映射,比如一台打印机同时只能运行一个打印任务,一个公司只有一个CEO等场景。二、实现步骤2.1 构造函数私有化;2.2 提供一个静态方法获取实例(需要注意多线程问题)。三、写法3.1 饿汉式(线程安全)p
2017-11-23 16:33:25
629
转载 Android Studio 中的调试技巧1
如果看日志分析不出问题所在,可能就需要打断点去调试。本文通过总结Android Studio的一些调试技巧来加强我们发现并解决BUG的能力,而不是仅仅停留在“断点单步执行”上。一、概述先来看一段代码:上图中左侧是我们打的断点,因为断点所在代码类型不一样或断点设置不一样,所呈现的图标也不一样。在断点位置右键可对该断点进行设置,如下图变量(相关设置窗口)
2017-11-13 15:34:39
852
转载 从startActivity一步步到穿越进程壁垒
身为一名Android程序猿,我们每天都在调用StartActivity来启动另一个页面,可是在调用了成百上千次之后,我们往往会疑惑在执行这行代码的时候,背后到底隐藏着什么原理。是的,我曾不止一次的怀疑过,可是却始终鼓不起勇气去揭开它背后那神秘的面纱。今天,我终于决定硬着头皮走进这超长的调用链,正所谓不成功便成仁,男人就要对自己狠一点。好了,废话不多说,直接开始。(下面有些图来自网络,因为我们往往
2017-09-30 15:57:40
313
转载 Android优化最全面知识总结
界面是 Android 应用中直接影响用户体验最关键的部分。如果代码实现得不好,界面容易发生卡顿且导致应用占用大量内存。 我司这类做 ROM 的公司更不一样,预装的应用一定要非常流畅,这样给客户或用户的第一感觉就是快。又卡又慢的应用体验,会影响客户或用户对产品的信心和评价,所以不可忽视。目录一. Android渲
2017-09-18 12:04:45
439
转载 经验积累-内存泄漏
关于App内存泄漏,相信多多少少都会遇到一些关于怎么排查泄漏不再赘述,相关工具可以使用MAT/LeakCanary,下面标出一些常见的修改点:1.无论是单例还是常规引用,我们的Context用于都是第一位,只需记住无论何时,Context对象优先使用ApplicationContext,覆盖整个软件生命周期2.Activity,对于那些必须使用Activity对象的引用
2017-08-22 17:36:26
484
转载 如果检测我们的安卓卡顿?
企业级开发常态:在复杂的项目环境中,由于历史代码庞大,业务复杂,包含各种第三方库,偶尔再来个jni调用,所以在出现了卡顿的时候,我们很难定位到底是哪里出现了问题,即便知道是哪一个Activity/Fragment,也仍然需要进去里面一行一行看,动辄数千行的类再加上跳来跳去调来调去的,结果就是不了了之随它去了,实在不行了再优化吧。于是一拖再拖,最后可能压根就改不动了,客户端越来越卡。事实上,很多
2017-08-18 16:06:06
1066
2
原创 自定义万能回弹插值器 BounceInterpolator
可以实时查看插值器的曲线图: http://inloop.github.io/interpolator/这个是谷歌的震动插值器 BounceInterpolator//Use javascript syntax to create complex equationsfunction bounce(t) { return t*t*8; }if (x b
2017-06-12 10:55:09
4764
转载 开源库ImageLoader的使用
这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影。 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚接触的人来说可能太少了,下面我就把我使用过程中所知道的写了下来,希望可以帮助自己和别人更深入了解这个库的使用和配置。 GITHUB上的下载路径为:htt
2017-06-09 18:43:28
283
转载 如何使用Android Studio把自己的Android library分发到jCenter和Maven Central
原文链接 : How to distribute your own Android library through jCenter and Maven Central from Android Studio译文出自 : 开发技术前线 www.devtf.cn与 泡在网上的日子http://www.jcodecraeer.com/译者 : jianghejie如果你想在Android S
2017-06-03 10:49:35
487
转载 Android 支付宝和微信支付集成
场景随着移动支付的兴起,在我们的app中,会经常有集成支付的需求.这时候一般都会采用微信和支付宝的sdk 来集成支付宝支付在使用支付宝支付的过程中,我们是在服务器端生成订单,客户端访问接口,得到订单信息.然后调起支付,支付成功后支付宝会分别 异步调用服务器端,同步调用客户端返回支付结果.开发步骤①注册支付宝账号——进行实名认证——提交审核资料——审核通过
2017-05-04 16:51:31
3860
转载 Android ListView工作原理完全解析,带你从源码的角度彻底理解
转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/44996879在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了。
2017-05-04 14:27:21
285
转载 追溯源码解决Viewpager之notifyDataSetChanged无刷新
最近项目结束,搞了一次代码分享。其中一位同学分享了一下自己在解决问题过程中的一些心得体会,感觉受益匪浅。整理出来,分享给大家。 建议使用自己编译的android os和虚拟机,这样就可以调试android系统中的任何组件。简单说来,深入android源码,去寻找解决问题的答案。这事儿说起来简单,实际做起来还是有些难度的。我也曾经尝试着去看过,没看一会儿就晕了。 所以还是有针对性
2017-04-19 15:25:46
347
原创 Freeline 在Android studio标准项目中的使用
实用步骤:按照如下先配置好build.gradle文件(1)工程下的:classpath 'com.android.tools.build:gradle:2.1.0'classpath 'com.antfortune.freeline:gradle:0.8.3'(2)项目下的:顶部加上这个 apply plugin: 'com.antfortune.freeline'a
2016-12-06 11:13:46
1271
转载 PorterDuffXferMode不正确的真正原因PorterDuffXferMode深入试验)
http://blog.youkuaiyun.com/wingichoy/article/details/50534175PorterDuffXferMode总是不能按照效果图预期的效果执行。关于PorterDuffXferMode的错误显示是一个对初学者十分深的坑,到底是bug呢,还是有需要注意的地方呢。这里就跟随我 带上手电筒,去一探究竟。转载请注明出处:htt
2016-10-18 18:54:40
445
转载 资料链接
=======================博客=============================有心课堂guolin胡凯官方培训课程litesuitsway爱哥trinearobinRobin Hu
2016-09-30 10:16:48
274
转载 android自定义view 模仿win10进度条
先上预览图:流程1.一个匀速圆周运动的点2.多个匀速圆周运动的点3.多个圆周运动的点,速度由快到慢4.点与点之间的间距线性减少,动画的最后合为一个点5.为了让动画看起来更加流畅,需要在动画即将结束的时候手动绘制点核心控件PathMeasure:截取Path中的一部分并显示ValueAnimator:完成动画从初始值平滑的过度到结束值的效果,同时还负责管理
2016-09-20 10:02:46
1212
转载 android源码解析之(十四)-->Activity启动流程
转载: 很经典的文章,比主席的分析的透彻全面: http://blog.youkuaiyun.com/qq_23547831/article/details/51224992好吧,终于要开始讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等,
2016-06-05 11:37:25
2433
转载 Linearlayout 测量过程源码解析(二)
转自: http://blog.youkuaiyun.com/lfdfhl/article/details/51347818大家知道,自定义View有三个重要的步骤:measure,layout,draw。而measure处于该链条的首端,占据着极其重要的地位;然而对于measure的理解却不是那么容易,许多问题都是一知半解,比如:为什么父View影响到了子View的MeasureSpec的生成?为什
2016-06-01 11:08:22
865
转载 Linearlayout 测量过程源码解析(一)
转自: https://github.com/razerdp/AndroidSourceAnalysis/blob/master/LinearLayout/android_widget_LinearLayout.mdLinearLayout 源码分析声明.本项目源码基于Api 231.谈谈LinearLayoutAndroid的常用布局里,LinearLay
2016-06-01 11:05:29
2664
1
原创 Handler消息机制源码解析
1.Looper.prepareMainLooper();ActivityThread thread = newActivityThread();thread.attach(false);if (sMainThreadHandler== null) { sMainThreadHandler= thread.getHandler();}if (false
2016-05-26 17:15:28
282
转载 Android Context简介
1. Context基本概念1.1 Context是什么? 1) Context是一个抽象类,其通用实现在ContextImpl类中。 2) Context:是一个访问application环境全局信息的接口,通过它可以访问application的资源和相关的类,其主要功能如下: • 启动Activity • 启动和停止S
2016-05-26 17:13:27
845
安卓波纹_二次开发CardView_LoadingView例子_常用数据结构_滑动控件自定义view集合1
2018-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人