![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android项目
小白马_521gyj
天行健,君子应自强不息!
展开
-
换肤效果实现
apk换肤在有些app上实现的还不错,比如QQ,网易云等;那怎么去实现一个无闪烁,无启动的换肤呢?接下来从代码角度一步一步去实现app的换肤功能要想实现真正换肤的话,首先要面临两个问题;首先是怎么知道哪些控件是需要换肤的?然后换肤的资源包是怎么从外部加载进来的?拦截系统创建收集需要换肤的View如上图所示,首先我们要做的是拦截系统实例化View的过程,自己创建View,收集需要换肤的View;那怎么去拦截呢?我们知道android 的页面大部分是通过布局文件xml来编写的,那系统是怎么解析这个.原创 2020-08-31 15:47:52 · 434 阅读 · 0 评论 -
Activity启动模式探究
文章目录tasksstandard模式从Launcher启动的情况startActivity的情况singleTop模式singleTasksingleInstanceIntent Flag介绍Task创建确定了Task之后对它的操作启动的标志设置启动的过程设置返回的地方返回后的状态说到启动模式想必大家都很熟悉;standard, singleTop, singleTask, singleInstance;要是说这几个有什么区别或者特点的话,估计有很多人也能说上来;但是,如果与taskAffinity和原创 2020-08-09 21:31:03 · 307 阅读 · 0 评论 -
ViewPager和Fragment懒加载
相信很多人都做过过viewPager与多个fragment滑动的app, 这种场景很多,但是由于ViewPager的缓存机制,最少需要多加载一个fragment,所以这就造成如果加载的页面数据请求比较大,这就造成了页面启动会比较慢;因此,我们只需要在页面可见的时候去加载数据就行了,那怎么才能做到在页面可见的时候加载呢?下面我们会一步一步实现Fragment是怎么实现懒加载的首先,我们实现懒加载的目的就是在页面可见的时候去加载数据,当然这还要处理第一次可见还是下次可见,因为一般情况下第一次可见的话就从.原创 2020-08-08 18:29:47 · 350 阅读 · 0 评论 -
从源码角度理解handler通信机制
handler 我们都知道,是android多线程的一种通信机制,很多人也知道怎么用它,并且也大致知道它的工作流程,但是如果有人问到子线程是怎么将消息发到主线程的?,消息循环会不会耗资源?为什么线程间的通信不会干扰?怎么保证每个线程的Looper与MessageQueue是唯一的接下来我会从源码的角度来回答上面的问题消息发送public class MainActivity extends AppCompatActivity { @SuppressLint("HandlerLeak") .原创 2020-08-07 00:10:04 · 160 阅读 · 0 评论 -
WebView跨进程通信框架源码分析
我们都知道webView是加载解析网页代码用的,但是如果webView加载的网页数据过大的话就会消耗本进程的内存空间,从而影响app的性能;因为,系统给每个app的进程分配的空间是有限的,过多的使用空间会造成进程空间资源不足;因此,遇到这种情况我们最好给webView开一个独立进程,这样的话app主进程就节省了加载webView资源的空间webView与native通信我们知道webView 在与本地代码互相调用的时候...原创 2020-08-05 01:30:14 · 710 阅读 · 0 评论 -
ReicyclerView实现探探卡片滑动的效果
我们知道RecyclerView 有很多显示的样式可供选择,比如列表的,网格的,瀑布流式的显示样式,这主要取决于RecyclerView.LayoutManager这个类,想前面说的网格的,列表的这些都是继承自这个类实现的,不过这些样式,比如:GridLayoutManager, LinearLayoutManager等这些系统已经帮我们做好了,所以要想实现类似探探的那种效果的话,我们还的想系统这样去继承RecyclerView.LayoutManager来对列表里面的子控件进行布局,显示成我们想要的样子.原创 2020-07-21 22:10:15 · 411 阅读 · 0 评论 -
RecyclerView复用与回收源码分析
我们知道RecyclerView 在滑动到一定数量之后回进行视图复用,那RecyclerView 是如何做到复用和回收的呢?首先我们在分析源码的时候得清楚我们要以什么目的去分析源码,像RecyclerView 复用的话,既然它是在滑动的时候复用的呢,那我们猜想它是不是就是在走滑动事件的时候去做的复用呢?带着这个疑问我们找到RecyclerView 源码里面从生面的描述中,首先我们需要找到滑动事件然后继续找复用与回收的方法寻找回收与复用的方法首先从RecyclerView源码中找到滑动事件的地方:.原创 2020-07-20 23:47:45 · 157 阅读 · 0 评论 -
屏幕适配的一种解决方案
android屏幕适配屏幕适配的一种解决方案方法说明实现代码效果图屏幕适配的一种解决方案众所周知,安卓屏幕适配一直以来是一个头疼闹热的问题,市面上的解决方案也层出不群,比如:google的百分比适配,还有像素目录适配等,这里要说的是另外的一种方式,而且这种方式几乎能够适配所有的屏幕方法说明其实很简单,大致需要两个步骤:根据ui切图的尺寸与当前屏幕的尺寸计算出尺寸比例继承需要适配的控件...原创 2020-04-11 15:34:14 · 453 阅读 · 0 评论 -
手写apk加固
手写apk加固加壳解压原apk并加密重命名dex文件对壳文件操作打包压缩成apk文件签名脱壳运行解压原apk, 解密原dex文件加载原dex文件demo下载apk加固的目的其实就是对app的核心代码做防护工作,避免被其他人反编译;废话不多说了,直接开始!加壳首先,要想对apk加固的话,需要以下几个步骤:解压原apk对原apk里面的classes.dex 进行AES加密重命名cl...原创 2020-04-05 22:31:24 · 523 阅读 · 0 评论 -
用ndk实现android的图片压缩
最近在看了动脑学院的图片优化之后,感觉通过ndk来实现的压缩,压缩比例还是很好的我们知道android的图片显示离不开bitmap,而在android开发中避免不了对图片的压缩处理,当然bitmap有自带的压缩方法,调用bitmap的compress方法就可以实现简单的压缩,但是这种压缩出来的图片从清晰度上来说,效果不是很好,原因在于这种压缩的底层处理是由google的skia图片处理引擎来...原创 2019-04-18 15:39:02 · 771 阅读 · 1 评论 -
GitHub上排名前100的Android开源库
转载于:https://github.com/Freelander/Android_Data/blob/master/Android-Librarys-Top-100.md本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 An转载 2017-12-08 15:48:17 · 1272 阅读 · 0 评论 -
从android源码中生成系统签名文件
1、编译android源码。2、cd build/target/product/security/ 3、执行 openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem生成platform.pem文件4、执行 openssl pkcs12 -export -in platform.x509.pem -o转载 2017-11-30 15:49:44 · 1190 阅读 · 0 评论 -
用ffmpeg 把mp4文件转为ts文件并生成m3u8列表
在使用hls技术播放视频流时,首先要把视频转换为ts片和一个m3u8播放列表,使用ffmpeg进行该转换时(低版本ffmpeg不支持直接转,只能现在转换成ts,再用m3u8-segmenter切片,笔者使用的是ffmpeg version-2.1.2),通常使用如下命令:ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls转载 2017-11-30 15:47:36 · 808 阅读 · 0 评论 -
Android 监听 ScrollView 滑动到最底部
Android 监听 ScrollView 滑动到最底部 转载自: https://www.cnblogs.com/carmanloneliness/p/4355158.html做产品时,有一个需求,需要监听ScrollView滑动到最底部。在网上找了些方法,都有这样或那样的问题,要不就是监听不精确, 要不就是重复监听,那些代码没有产品化,很不可靠。 经过自己试验,终于找到了个能够精确监听转载 2017-11-20 09:54:17 · 736 阅读 · 0 评论 -
小白马卫士项目总结之手机防盗
如果想要远程锁屏的话,可以点击激活后可以远程锁屏这个,然后激活一下就可以了!设置完成后就进入到主界面了!其中主要的实现代码是这样的,上面也有详细的注释,值得说明的是,密码的保存我是通过SharedPreferences来完成的,当第二次进入的时候,它通过存放的boolean类型的状态判断一下是不是第一次设置,如果是第一次设置的话,就进行设置密码,如果不是第一次设置的话就进行输入你设置的密码!原创 2014-12-04 21:44:55 · 869 阅读 · 0 评论 -
小白马卫士项目总结之防盗功能的实现
此功能的实现原理是这样的,在点击sim卡时,程序会获取本机手机卡的卡串号,然后把它存储起来,然后当你的手机丢了的时候,你会通过手机上的安全号码发短信给你的手机,然后程序会再一次或许本机上的卡串号,如果与之前的卡串号不一致的话,那就给这个安全号码发送短信,提示卡换了!当然这个得话,你得用广播进行接收安全号码发过来的短信!而且这个广播的类型是系统自启动就开了,而且通过广播还得重启一个服务,如果手机丢的话,你可以发送短信,让这个服务帮你擦除数据!原创 2014-12-04 22:34:17 · 858 阅读 · 0 评论 -
小白马卫士项目总结之程序管理
程序管理这个模块的话说起来也挺简单的,其实就是通过PackageManager这个类获取包的管理者对象然后再得到手机上所有程序的有关信息,包括程序的包名,名字,版本,图标等等!然后把它放在list集合中,然后通过适配器把它放在listView里面就可以了!恩~~ 首先就是写一个程序信息的提供类,在这个类里面有得到应有程序的方法,还有判断出那个是用户程序原创 2014-12-06 19:27:14 · 783 阅读 · 0 评论 -
小白马手机卫士之进程管理
进程管理的话,也是比较简单的,首先是写一个获取手机正在运行的进程的类,此类中会有区分那个是用户进程哪个是系统进程的方法原创 2014-12-06 20:37:52 · 767 阅读 · 0 评论 -
小白马卫士项目总结之通讯卫士
在我们对号码进行设置的时候,它其实是把号码保存到android的数据库中的!当我们再次进入的时候它是从数据库里面取数据的;在创建数据库的时候我们需要继承SQLiteOpenHelper这个类:原创 2014-12-05 20:45:00 · 950 阅读 · 0 评论 -
小白马卫士之流量统计
然后就是加载界面程序的代码了,小白马觉得这里的话与程序管理模块差不多所以多余的话就不在赘述了就直接上代码了原创 2014-12-06 21:13:11 · 1078 阅读 · 0 评论 -
小白马卫士之手机杀毒
手机杀毒的话,其实就是通过PackageManager的管理者获得手机上面所有安装好的程序,然后在病毒库里面检测与当前程序是否与病毒库里面的程序匹配,如果匹配的话,那就有病毒,然后将其删除就行了!在这之前需要一个DAO来进行检查是否有病毒原创 2014-12-15 20:30:06 · 1242 阅读 · 0 评论 -
android butterknife注解绑定后发生nullexception
问题今天想用一下butterknife这个库,可是当我在gradle的dependencies里面加入这个compile 'com.jakewharton:butterknife:8.4.0'然后在activity里面这样做了一下:public class MainActivity extends AppCompatActivity { @BindView(R.id.name_txt)原创 2017-01-12 14:48:46 · 509 阅读 · 0 评论 -
android 64k方法数限制的解决方案
问题描述Android 应用开发中,当应用的模块增加到一定规模后,apk不可避免的会出现64k方法数问题。 64k方法数问题的直观表现是在构建APP的时候会先编译错误,导致构建失败:Conversion to Dalvik format failed:Unable to execute dex: method ID not in [0, 0xffff]: 65536解决方案网上有很多解原创 2017-01-12 17:26:21 · 477 阅读 · 0 评论 -
android 文件下载引擎
给大家分享一个文件下载引擎 个人觉得还是挺牛的!转载 2017-01-19 11:56:57 · 465 阅读 · 0 评论 -
android studio根据配置打不同功能的apk
今天在做项目的时候,经理要求在项目编译的时候根据build的配置来执行不同的代码,从而打出不同功能的apk,这个我觉得要写脚本,索性经理给了我一段配置代码解决了这个问题: 在app下面的build.gradle里面添加如下代码: productFlavors { anyone { } wine { } }原创 2017-02-23 15:17:44 · 1032 阅读 · 0 评论 -
机顶盒项目--遥控器组合键的实现
一般在机顶盒的开发中,难免会出组合键的情况,那怎么实现呢:首先写一个组合键接受的监听类:public class BackDoorDetector { public BackDoorDetector(int []keys, BackDoorKeysListener listener) { this(keys,listener,2000); } publi原创 2017-02-23 15:32:03 · 1416 阅读 · 0 评论 -
小白马卫士项目总结之版本更新
实现原理:通过向服务器端发送请求,获取服务端的版本信息,然后再与本机上的软件进行比对,如果版本不一致的话,那就得更新版本!首先需要一个打开的欢迎界面:原创 2014-12-04 09:02:23 · 1299 阅读 · 0 评论