
android原理
黑键手记
java android framework
展开
-
图解 Android 事件分发机制
在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。Android 事件分发流关于Android 事件分发机制网上的转载 2016-07-09 22:50:29 · 500 阅读 · 0 评论 -
Android 原生和H5 同一cookie
引言在开发过程中,我们有时会需要让Android原生 登录完成之后记录登录状态,然后在内嵌的 H5 页面也使用当前的登录账户,这个时候,我们可以采用 token 的方式,后台根据 token 方式,去加载对应页面数据。当 token 失效时,当然也就代表了当前的用户的登录有效期过期了。不过 token 有效期的检验 逻辑很简单,我们先不做分析,下面我们来分析下如何将登录信息保存到co...原创 2018-11-18 01:06:25 · 628 阅读 · 0 评论 -
Flutter 实现流式布局
先来看看效果图吧想必很多同学已经开始体验flutter了吧,如果还没有安装,请移步flutter 中文网进行安装。不过别着急,光看个热闹也是可以的,顺便熟悉一下 flutter 的语法,也是很不错的哦。当然,在安装flutter过程中,可能会遇到一些坑,我只是记录了我自己的坑,如果想了解,请查阅我之前的文章。那么,接下来,我们步入正题,我自行切入小白视角,大神路过请手下留情...原创 2019-01-14 10:42:13 · 4158 阅读 · 0 评论 -
2018-12-26自定义吐司大小控制
控制自定义Toast宽高的属性值在父布局中设置是无效必须设置在内部的的控件上才能生效如下原创 2019-01-10 09:46:12 · 310 阅读 · 0 评论 -
Binder机制第一篇——Android Studio中编写AIDL
前方提示:小白篇,大牛绕道~效果图: 其实很简单,服务端有一个“败家之眼”的图片,我们要做的是:远程到服务端,然后获得服务端的图片,显示到自己的 ImageView 上边。额~ 我们开始吧~1、创建远程端,指定远程端的进程,确保我们的两个应用处于同一进程让我们应用处于同一进程很简单,只需要在清单文件中设置android:process属性就可以了但是对于 proc...原创 2019-01-10 09:47:55 · 274 阅读 · 0 评论 -
git 如何获取指定 tag 代码
如果你本地有代码仓库 - git tag //查看本地tag - git checkout tag_name如果你本地没有代码仓库- git clone git@xxx.xxx.xxx:/project_name.git- git tag //查看本地tag 注意上面的git服务器地址,项目所在目录要替换 然后执行 checkout- git chec...原创 2019-01-10 09:48:43 · 6613 阅读 · 0 评论 -
2019-01-04 mac使用brew update无反应,更新慢解决办法
主要是资源访问太慢的原因造成的,替换一下镜像就可以了有点耐心,大概5分钟就可以了,刚开始的时候terminal 只有顶部的title栏会变化,最后才会出现更新结果使用中科大的镜像替换默认源第一步,替换brew.gitcd "$(brew --repo)"git remote set-url origin https://mirrors.ustc.edu.cn/brew.git...原创 2019-01-10 09:49:34 · 11180 阅读 · 7 评论 -
2019-01-07 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)解决方案
使用flutter运行报出xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun的错误当然,错误的意思是:找不到 CommandLin...原创 2019-01-10 09:50:40 · 1446 阅读 · 0 评论 -
怎么导入 java.util.Base64 到 Android 项目?
java 的提取证书的方法,其中用到了java 中的 base64包 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.security.MessageDigest; import...原创 2019-01-22 12:35:12 · 3792 阅读 · 3 评论 -
Android 获取在线音频时长
so easy MediaPlayer mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource(audioUrl); mediaPlayer.prepare(); int duration = mediaPlayer.getDuration(); ...原创 2019-01-22 13:43:44 · 3908 阅读 · 0 评论 -
TabLayout 设置选中Tab字体加粗,这可能是全网最新写法
为什么写这篇文章?是因为搜了全网都没有一个很简洁的方式有的只是去给 TabLayout 添加「自定义的布局」,然后再对 TabLayout 进行 Tab 卡片的切换进行监听,来更改 「自定义布局」 中的 文字的加粗或者其他。都说懒是提高效率的重要原因,对于我搜到的解决方案,我是不想采纳的。所以,我就开始反复琢磨,看有没有更简洁,更完美的方案,而TabLayout 并没有暴露出来更多的“...原创 2019-09-25 14:19:01 · 3967 阅读 · 2 评论 -
Retrofit 设置头信息
用retrofit设置头信息:通过@Header 或者@Headers 去添加区别是 @Header 需要写到参数位置,用于指定可变的头信息而@Headers 则作用于方法,用于指定固定的头信息如: //@Header写法: @GET("goods") Call<Goods> getGoods(@Header("Author") String author...原创 2018-11-13 17:12:52 · 466 阅读 · 0 评论 -
App优化--App瘦身
详见,思维导图地址:APP瘦身查看密码:xfBM原创 2018-11-13 17:12:26 · 674 阅读 · 0 评论 -
自己动手编译最新Android源码及SDK
在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译的一些事.(俺认为,作为android developer人人都应该有一份自己Android源码,这样我们就可以随时对自己有疑惑的地方通过亲手调试来加强理解).本文适用于Ubuntu 16.04上编译Android 6.0.*,其他情况请酌情处理,自行参考官网吧.请首先原创 2016-07-09 22:55:47 · 7375 阅读 · 2 评论 -
通过一个textview展示较为复杂的效果
有的时候,可能我们需要展示的信息很少,这个时候如果用线性布局或者相对布局等嵌套的话,感觉有点小题大做了,那么有没有一种可能让textview展示比较复杂的方式呢?目前提供一种解决方案,仅供参考,当然也是调api而已啦 String text = info.getText(); //text 中用户名置为蓝色,把消息置为白色原创 2018-01-29 00:11:16 · 340 阅读 · 0 评论 -
Android屏幕适配之全面屏适配
引言从2017年开始,全面屏之战逐渐如火如荼的展开了,那么我们Android程序员又多了一个小事情,就是解决全面屏适配的问题。全面屏和以前的屏幕相比,有以下几点改变以前 16 : 9 的 比例 变成了 18 : 9,甚至是 19 : 9 ... 屏幕内的虚拟导航键解决方案来了一、解决现实不全,黑边的情况方案一、声明方式 <meta-da...原创 2018-11-09 15:18:53 · 3308 阅读 · 1 评论 -
Android 屏幕适配之刘海屏适配(notch 适配)
引言首先先翻译一下 notch 即 凹痕 的意思,那我们就认为是 “刘海” 就可以了。目前,市场手机的潮流就是推出 全面屏、齐刘海 的手机,比如现在的华为、oppo 、vivo、小米等等手机厂商陆续推出了几款 齐刘海的手机。但是,现在有个问题,就是 google 的 Android 系统中在官方发布齐刘海的屏幕方案之前,这些手机厂商已经进行了刘海屏的开发了,所以我们从a...原创 2018-11-09 17:56:49 · 1931 阅读 · 0 评论 -
网络状态改变是无序广播还是有序广播,安装了,没启动过,会接受这个广播么?
是无序广播不会接受这个广播因为android在3.0之后,对广播添加了一个flag :Intent.FLAG_EXLUDE_STOPPED_PACKAGES这个是为了加强对“停止”状态APP的管理(如用户安装未启动,或者用户强制停止的)。广播加上这个FLAG之后,处于“停止”状态的APP是无法收到广播的。而系统发出的广播基本都有这个FLAG,因此该类广播我们在使用的时候主要采用动态注...原创 2018-11-13 17:07:55 · 261 阅读 · 0 评论 -
怎么判断接收的广播是有序广播还是无序广播
在BroadCastReceiver中的onReceiver() 方法中,使用isOrderedBroadcast() 进行判断,返回值为true 说明是有序广播原创 2018-11-13 17:08:26 · 1129 阅读 · 0 评论 -
BroadCastReceiver 的生命周期及注意事项
1、BroadCastReceiver 的生命周期很短暂,当接收到广播的时候创建,当onReceive()方法结束后销毁2、正因为BroadCastReceiver的声明周期很短暂,所以不要在广播接收器中去创建子线程做耗时的操作,因为广播接受者被销毁后,这个子进程就会成为空进程,很容易被杀死3、因为BroadCastReceiver是运行在主线程的,所以不能直接在BroadCastRece...原创 2018-11-13 17:08:53 · 3258 阅读 · 0 评论 -
Service 的 onRebind(Intent)方法在什么情况下会执行?
当service中的 onUnBind() 方法返回true的情况下,再次绑定服务会被调用,否则不执行原创 2018-11-13 17:09:44 · 353 阅读 · 0 评论 -
Service的onStartCommand方法的返回值有几种,各表示什么意思
有四种 START_STICKY 粘性的 表示:如果service被杀死之后,service会保留开始的状态,但是不会保留之前传递过来的intent对象 START_NOT_STICKY 非粘性的 表示:service 被杀死之后,系统不会自动重启该service START_REDELIVER_INTENT 重传intent 表示:service 被杀死之后...原创 2018-11-13 17:10:14 · 1060 阅读 · 0 评论 -
Android的系统架构
分为5层由底到顶部分别是Linux 内核层 Linux Kernel层 运行库层 应用程序框架层 应用层一个一个说:1、Linux内核层:负责硬件的驱动程序,网络,电源,系统安全及内存管理功能2、运行库层:又称C库层,为c或者c++函数库大多数为开放源代码的函数库,如:webkit(负责android网页浏览器的运行)libcopensslsqlite2dsgl...原创 2018-11-13 17:10:46 · 196 阅读 · 0 评论 -
sharepreference 频繁操作有什么后果?sp 能存多少数据?
sharepreference在android中是以xml类型的文件存储在内存中的那么读写sp,肯定会进行xml文件的序列化和解析过程那么频繁的对本地xml文件进行序列化和解析,肯定会导致性能消耗,尤其是在当sp很大的情况下,会严重影响性能。所以我们在进行sp缓存的时候,只存一些简单的配置信息,如果需要大量的数据缓存的话,建议使用sqlite当然,sp能存多少数据是根据dvm 虚拟机...原创 2018-11-13 17:11:14 · 2319 阅读 · 0 评论 -
Jenkins 自动打包,区分是否是多渠道(搜了全网也没搜到相关问题,只好自己解决)
如题,只说一个小问题如何让 jenkins 打包时区分多渠道包情况 或者 单个包呢因为我们的项目中使用了 「多渠道打包」,这样作为开发同学在打包时只需要优雅的一句./gradlew assembleRelease搞定(mac)但是多渠道的代码却对「jenkins 自动化打包」产生了影响,因为 「jenkins 自动化打包」所借助的是 gradle ,相较于开发自己本地打包还要慢上一...原创 2019-09-25 14:20:17 · 658 阅读 · 0 评论