![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 71
Hoyn
Android开发工程师一枚
展开
-
Android9 系统编译 修改开机动画
参考文章Android8.1 修改开机动画开始:我手上有一张gif图片。去百度找了个gif分解的网站,把gif分解为了180张图片。如图把最后一张,也是完整显示的一张复制出来放到part0下,其余文件放在part1下,由于我前30张图是全白的空白图片,所以我删了,保留了后150张创建desc.txt内容如下:388 353 25 // 开机动画大小为宽600 高 480,动画的显示速度为25帧每秒。p 1 25 part0 // part1目录下png图片显示一次,循原创 2022-01-21 10:24:32 · 3405 阅读 · 0 评论 -
Android9 系统编译 替换Launcher
在网上找了一些资料,搞了一天,没成功。应该是资料太旧了,后面自己解决了。我的需求很简单,需要开机启动自己的launcher应用,按home不能返回到原launcher。也不需要原生的launcher。编译的版本是Android 9.0Android 9.0编译参考下面是步骤:首先自己的app在AndroidMainfest需要配置为Launcher,这一步就不多说了。然后最简单的是在make之前,删除 packages/apps/Launcher2和Launcher3然后建一个文件夹,装自己原创 2022-01-20 10:00:00 · 1800 阅读 · 1 评论 -
Xposed 实现给Hook的APP动态添加权限Permission
Xposed 实现给Hook的APP添加权限Permission因为Xposed的资料都比较老了,所以只有找到android低版本的权限添加。今天研究了一会,把hook app 的动态权限添加了。直接说方法Xpose模块:添加权限需要activity对象,所以首先获取activity。直接拿到onCreate里的this对象就是activity对象了 findAndHookMethod("com.example.hoyn.example.MainActivity", lppara原创 2020-07-05 02:09:05 · 2845 阅读 · 0 评论 -
Xposed 利用ContentProvider实现跨进程数据读取
Xposed 利用ContentProvider实现跨进程数据读取由于Android N以后,Sharepreference的第三个参数MODE_WORLD_READABLE的被禁止,Shareperference的跨进程通信变得不可用,谷歌推荐使用ContentProvider进行通信。但是由于ContentProvider在平时简单的使用中过于重量,需要进行数据库操作特别的麻烦,所以我找到了一个库,基于ContentProvider封装,使用和平时SharePreference基本一致。开源库地址原创 2020-07-02 23:32:04 · 5411 阅读 · 1 评论 -
Butterknife下的BaseAdapter封装。
现在做新项目,每次ListView或GridView用adapter的时候,都要写一大堆。于是我写了一个AdapterCopy的类,每次用的时候都全部复制过去。受够了这种复制粘贴,今天突发奇想,为什么不把Adapter封装一下,让它和封装后的Activity一样好用?adapter设计思路(adapter理想模型): 1、getView() 。返回型为int,即和activity一样,只需要返回一原创 2016-06-12 13:28:26 · 1026 阅读 · 0 评论 -
解决Android studio导入项目卡死
一、找到项目下gradle\wrapper\gradle-wrapper.properties文件,打开后在最后一句gradle-2.13-all.zip,改成自己的。(新建个项目,可以看到自己的项目的版本,我的是gradle-2.8-all.zip) 二、在项目最外层的build.gradle里dependencies { //把这个版本改成的 classpath原创 2016-06-20 10:35:43 · 2207 阅读 · 0 评论 -
切换多国语言导致Fragment被回收,出现切换错乱
如图所示,切换多国语言之后,由于fragment被回收,再次进入app的时候,切换fragment会错乱,甚至有可能切换完全无效果。在百度google之后,发现只有这个和我现在遇到的问题比较像,但是代码却不是很完善。在切换语言时,activity会被系统回收后重新创建,此时原先依附于该activity的fragment也会被系统destroy掉,但系统会自动创建新的fragment的实例atta原创 2016-06-30 11:01:19 · 7856 阅读 · 1 评论 -
Android仿天猫下拉刷新自定义控件
1、概述控件基于android-Ultra-Pull-to-Refresh做的header定制,继承PtrFrameLayout,把事件分发给里面的RadioGroup,所以两个自定义控件分别叫HoynPtrFrameLayout,HoynRadioGroup。 因为需要PtrFrameLayout里面的一些私有属性:mPtrIndicator,mScrollChecker,所以把PtrFrameL原创 2016-07-13 17:23:40 · 4106 阅读 · 0 评论 -
利用JAVA反射机制破坏单例机制,生成非单例对象
今天用科大讯飞的SDK,它的语音识别是用的同一个SpeechRecognizer对象,但是它的语音识别、命令词识别如果同时用的话,由于SDK自带的SpeechRecognizer.createRecognizer是单例模式,所以会造成使用冲突。一旦设置了命令词识别参数之后,语音识别就不管用了。 所以今天利用反射,去破坏它的这种单例机制,让自己的语音识别和命令词识别是两个对象,方便使用。///原代码原创 2016-11-03 18:48:32 · 1200 阅读 · 0 评论 -
Activity 全屏,沉浸式模式这一篇就够了
本文转载自 http://blog.csdn.net/zhangqinghuazhangzhe/article/details/52935290 第一次在项目中要用到全屏功能的时候无从下手,然后就是去百度了。百度到的结果都是差不多的。不过直接把代码贴过来的确是可以用的。但是除了知道怎么做之外还想去理解它,因为只有理解了才能举一反三嘛。好在在后来的时候看到了官方的文档,写的非常详细。–转载 2016-11-04 09:48:56 · 4092 阅读 · 1 评论 -
打造一个炫酷的EventBus
以前做了一个给EventBus增加消息提醒的Jar包,发现太丑了,而且我自己用久了之后看起来让我感觉很不爽。 很喜欢Logger的日志显示,所以仿照Logger重新打造了一下EventBus。 现在的效果如下 是不是感觉看起来很清爽,而且在哪里Post的或者哪里接收到的,点一下就可以进入Activity里面。现在我们来开始打造:首先,我们需要知道蓝色引导的Log怎么做。开始我以为是用的什么原创 2016-12-21 15:32:19 · 463 阅读 · 0 评论 -
给EventBus增加订阅收到消息提醒,用AndroidStudio重新打包成Jar文件
用过EventBus的人都会觉得EventBus很好用,但是EventBus有一个让人很难受的地方—-在你post之后,可能会有几处接收到你post的对象,但是作为开发者,时间长了之后,并不知道在哪几处接收到了订阅的消息。特别是在项目大了之后,到处都在post,但是却不知道哪里接收到了。 所以我简单修改了一下它的源码,让它能支持debug模式。 首先去下载源码EventBus.java在Even原创 2016-07-16 16:10:22 · 1114 阅读 · 0 评论 -
Retrofit2实现缓存。离线缓存、在线缓存及@headers控制缓存时间
参考来自 使用Retrofit和Okhttp实现网络缓存。由于retrofit和okhttp都已经更新,在某些细节上参考的那篇博客已经不适用了,而且那篇博客并没有介绍@headers如何具体使用。这篇博客完整的介绍了怎么用interceptor实现retrofit的缓存,学习时需要注意一下自己的retrofit,okhttp的版本,因为不同版本的某些方法名是不同的,在文章末尾我把现在使用的版本贴上原创 2016-05-10 18:32:54 · 6725 阅读 · 5 评论 -
Picasso OOM浅谈。
自从项目图片加载从ImageLoader换成了Picasso,很久没有担心过OOM的问题了。不过最近在三星Note2发现加载大图的时候出现了OOM,通过解决了这个问题,把Picasso的理解又加深了一层。于是今天简单记录一下造成OOM的原因和解决方法。场景1、 在ListView里面,piscasso加载图片,不用担心复用问题,可是假如ImageView是100*100,而图片是1000*1000原创 2016-06-03 15:51:35 · 2653 阅读 · 0 评论 -
RxAndroid简单入门。
这段时间研究了一下rxJava,rxAndroid。对于刚接触RxJava的人来说,完全是迷茫状态。相信看了大神的博文之后,心里有这样一个疑问,我只是想学rxJava,lambda和Retrofit又是什么鬼,完全看不懂了。所以这篇博文主要是单独讲RxJava在Android中的运用。一、RxJava是什么? 二、RxJava感觉很牛B,但是又有什么用? 三、我要怎么才能利用RxJava的反应式原创 2016-05-03 10:00:27 · 872 阅读 · 0 评论 -
获取View的width,height的正确方式
今天做了一个视频的简单缩放,根据父容器大小,缩放一倍。但是做的过程中发现得到父容器的width,height为0,查了一下资料,找到了解决办法。原创 2015-08-26 14:24:25 · 1042 阅读 · 0 评论 -
Android开发-通过USB实现ADB控制
1、首先配置ADB环境(也可以不配置,只是为了操作方便),将Android sdk中的 platform-tools和tools加入到环境变量。 2、win+R调出CMD,输入adb,如果cmd中弹出一大堆东西,就是配置成功了。如图示: 3、USB插入手机或启动模拟器,在cmd中输入adb devices 出现图片上所示,代表ADB通了,可以实现一些操作了。(如果出现error,首先判断一原创 2015-09-15 19:33:51 · 5042 阅读 · 0 评论 -
Android开发-通过ADB+Socket实现USB数据传输
通过ADB+Socket实现USB数据传输原创 2015-09-16 15:40:38 · 9721 阅读 · 2 评论 -
图片头文件信息解析
今天发现获取图片的宽高,并不需要把图片完全读完之后再来获取,而只需要读取文件头文件,几十个字节便可以读出文件的宽高。 图片的文件头部存储有该图片相关信息,可以从中读取相应字段,得到尺寸、大小、格式等信息。由于无需载入整张图片,故而速度较快。当图片较大时,优势更加明显。 现在把今天发现的东西总结一下,所有数据都是用的QQ截图。特征码的位置可能和实际不同,目前发现jpg的宽高特征码不确定。如果以原创 2016-01-12 13:25:39 · 25430 阅读 · 0 评论 -
用PocketSphinx做离线命令词识别
主要内容转自Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率,在此只是记录一下实现过程中遇到的坑。 最近语音识别很火,但是都是用的在线语音识别,研究了一下离线语音识别,小范围内的语音识别率还不错,在此记录一下 首先本文要说的两个前提1.android平台离线语音识别 2.小范围语音 小范围语音指的是相对固定的命令。本文的例子大概实现了20条原创 2016-01-12 17:41:14 · 7142 阅读 · 5 评论 -
ConvenientBanner在TabHost下tab切换出现空白解决方案
在tabHost下,由于重写了onCreateView,保存fragment实例,导致了Tab切换时,ConvenientBanner在最后一张图准备轮播到第一张图,会出现空白。@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedIns原创 2016-04-01 09:54:14 · 1809 阅读 · 1 评论 -
Android带虚拟按键的手机不认res/values的屏幕适配解决方案
在某些带虚拟按键的手机上会出现不识别values文件的情况,例如1080*1920的带虚拟按键的手机,不会识别values-1920*1080的资源文件。 同样都是1080P,但是带虚拟键盘是不识别的。 原因是:带虚拟键盘的屏幕分辨率是1920*1080,但实际上他是识别真实高度((1920-虚拟键盘高度)*1080)。虚拟键盘高度哪里来呢?如果可以从参数上获取就取那个,如果不行就用类似原创 2016-04-01 09:39:22 · 4377 阅读 · 1 评论 -
MVP in Android,让Activity更优雅一点。
我一直认为面向接口编程的设计才是最好的设计。之前我一直用的okhttp,利用request(url,params,callback)这种方式来获取结果。但是自从了解了retrofit,我毫不犹豫的替换了自己的网络请求框架。 为什么?因为retrofit是利用接口定义的请求。@GET(url)Call getXX(params1,params2);要是哪天后台接口变了,需要增加一个参数,我不用去在原创 2016-05-24 11:33:52 · 1289 阅读 · 0 评论 -
EventBus3.0的基础使用。
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。在我看来,eventbus在各个界面的传值特别方便。无论在哪个界面,只要注册了eventBus都可以收到任何界面post过来的消息,类似于观察者模式,原创 2016-04-27 18:55:09 · 796 阅读 · 0 评论 -
是时候来了解一波Retrofit2了。
之前的网络请求一直是用的okhttp,这段时间了解了一下retrofit2,发现比自己封装的okhttp灵活很多,他的所有请求方式都是用接口实现,不像okhttp那样,万一想获取一个新的callback,又得重新封装一个方法。 项目只要导入了okhttp,retrofit默认用okhttp请求网络,返回的类型是Call,那么就相应OkHttp的callback 可以配合RxJava使用,返回的类原创 2016-05-06 10:28:43 · 2733 阅读 · 0 评论 -
RxJava在Android中内存泄漏解决以及RxJava的封装。
RxJava在现在是一个非常前卫的异步框架,也是由于他非常新,所以比较难以驾驭。 像okhttp直接在onStop或者onDestroy 调用它的cancel方法就行了,但是Rxjava并没有那么简单。因为假如每次请求都得到Observable对象,然后再onStop中unsubscribe取消,这样很不利于封装。而且会造成代码量很多,所以我找到了用rxlifecycle的解决方案。 先导包原创 2016-05-06 18:52:21 · 6642 阅读 · 1 评论 -
由浅入深理解Activity的诞生
近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一下。总所周知,Activity的生命周期(onCreate,onStart,onResume,onPause,onStop,onRestart,onDestroy) 上图是经典的activity生命周期图,相信不少朋友也都看过。简单的说,在原创 2015-08-22 15:11:42 · 1912 阅读 · 0 评论