Android
lognic10
好人
展开
-
Android----使用giflib实现高效加载gif图片控件
前言该篇只是记录一下利用giflib来加载gif图片的使用,主要涉及知识:C/C++基础,CMake编译、gif格式,本文不做详细介绍。Gif格式可以参数:https://blog.csdn.net/wzy198852/article/details/17266507原理使用giflib(Android源码工程里有)加载gif文件,并解压每帧对应的图像信息,通过字节拷贝的方式替换Java层的Bitmap实例对应的内存里的字节,以达到在同一块内存空间渲染不同图片信息的效果,由于整个过程主要.原创 2020-11-18 14:41:32 · 1110 阅读 · 0 评论 -
Android---高效实现增量更新
原理获取文件差异:遍历两个字节文件old和new,比对每个字节的差异,并记录差异字节的文件索引,然后把差异的字节内容和索引记录到一个差异文件patch里。合并差异:解析上面生成的patch文件,根据记录差异的索引和内容,修改或添加到old文件,修改后的old文件的内容就跟new文件的一样了。重新安装apk:把合并后的apk文件重新安装后,这样就实现了增量更新的功能。这样做的好处是不管你修改的是java代码,还是资源文件,还是代码混淆等都能正确的合成(前提是生成差异文件和合并差异文件时没出错)原创 2020-11-13 12:07:07 · 249 阅读 · 0 评论 -
Android简单的资源分离方案----动态加载外部资源框架
前言资源分离顾名思义就是把资源(通常是图片)从主工程里抽出来到单独的一个工程或者模块,主工程通过网络或者sd卡等获取到资源apk包,然后动态加载资源apk包里的资源。它的优点有:1、减少主apk包的文件大小;2、动态换肤;缺点:1、资源无法预览;2、额外的性能消耗原理接手AppCompatActivity对View的创建过程,解析自定义属性动态加载资源apk包对应的资源,最后设置到View对应的属性上。查看源码可知,AppCompatActivity.setContentView()加.原创 2020-11-07 17:51:53 · 763 阅读 · 0 评论 -
Android热修复/热更新的简单实现-----dex插桩方案
原理先说一下Java的主动引用,主要场景有:1、遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,类的class如果没有被加载会先被ClassLoader加载到内存,然后才能创建对象,读取或设置静态字段,调用静态方法等。2、反射,Class.forName()3、子类初始化前会先初始化父类4、包含main方法的类,虚拟机启动时会先初始化该类5、使用jdk的动态语言支持时每个class要使用时,也就是主动引用时会先通过ClassLoader把.原创 2020-11-04 00:52:51 · 1145 阅读 · 1 评论 -
Android---自定义简单的ORM框架
前言本案例只是一个简单针对Android sqlite数据库的ORM实现,主要使用了Java的注解和反射机制。本文只是提供一下实现的思路,后续可能会实现一个基于APT技术的,有兴趣的读者可以参考之前写过一篇文章:Android--仿ButterKnife自动绑定View实例以及点击事件之二(主要利用APT、JavaPoet技术)。实现前需考虑的几个问题:1、应该定义哪些注解?本文只定义的4个基本的注解,分别是:@DbTable:添加在JavaBean类上,表示映射对应数据库表。如果没有.原创 2020-11-02 14:46:09 · 233 阅读 · 0 评论 -
模拟Android的事件传递机制
本文参考源码,简单模拟了View事件的传递过程。package com.log.touchevent;import com.log.touchevent.listener.MotionEvent;import com.log.touchevent.listener.OnClickListener;import com.log.touchevent.listener.OnTouchListener;public class View { protected String name;原创 2020-10-27 14:31:11 · 61 阅读 · 0 评论 -
Android--仿ButterKnife自动绑定View实例以及点击事件之二(主要利用APT、JavaPoet技术)
前言本文是前一篇的延续,阅读需要提前了解JAVA的APT技术、第三方代码生成框架JavaPoet。Android--仿ButterKnife自动绑定View实例以及点击事件之一(主要利用反射技术)下面有几篇写的很不错参考文章,本文也是参考这些文章或官网:https://www.jianshu.com/p/b5be6b896a1a?utm_campaign=haruki&utm_content=note&utm_medium=seo_notes&utm_sourc.原创 2020-10-24 14:53:06 · 182 阅读 · 0 评论 -
Android--仿ButterKnife自动绑定View实例以及点击事件之一(主要利用反射技术)
前言要读懂本文需要有自定义注解、反射以及Java动态代理的基础。代码里有注释,暂时不做过多的分析,后面有时间再补充。一、定义注解:import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Retention(Retentio.原创 2020-10-24 14:14:12 · 199 阅读 · 0 评论 -
关于安卓7.0版本以上charles无法抓取https包的问题解决办法
结论:由于安卓7.0后,用户安装的证书不被信任,导致无法使用charles等抓包工具对https的请求包进行正常的解析,所以直接用安卓7.0以下的手机来进行抓包,或者最简单的就是用模拟器!前言解决这个问题比较复杂,需要花费大量时间来解决这个问题,如果没有耐心是不能成功的.可以说这里解决的每一步都有坑问题描述在安卓7.0及以上的版本,即使安装了charles证书,也会导致抓取https包失败如图https包出现unknow报错为什么这样Android6.0网络默认...转载 2020-10-22 20:48:48 · 3232 阅读 · 1 评论 -
Android--简单的图片三级缓存工具类
ImageUtils.javaimport android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Environment;import android.util.LruCache;import org.xutils.common.util.MD5;import java.io.File;import java.io.FileInputStream;import java.io..原创 2020-10-22 19:10:40 · 129 阅读 · 0 评论 -
Android造轮子---联系人快速索引
联系人快速索引,可以根据右边索引导航来定位具体拼音首字母的数据,下面是效果图:实现主要使用三个View:1、ListView:负责展示联系人数据2、右边的索引IndexView(自定义View):负责处理用户点击或滑动事件,根据事件坐标值定位相应的字母索引,并通知索引事件监听者3、正中间的当前索引拼音首字母提示ViewIndexView实现原理:1、根据控件宽度和高度计算出每个字母所占的区域大小2、通过Paint.getTextBounds()计算出每个字母本身的宽高3、..原创 2020-10-09 15:55:11 · 301 阅读 · 0 评论 -
Android6.0动态处理权限BaseActivity封装
import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.pm.PackageManager;import android.os.Build;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;i.原创 2020-10-03 12:10:57 · 216 阅读 · 3 评论 -
Android的Handler处理消息机制(Looper、MessageQueue)
撸了一下Android的源码,把Handler、Looper、MessageQueue以及Message的关系稍微捋了一下,发现其实只要明白了ThreadLocal的原理,就能明白为什么通过Handler发送Message就能在UI线程(主线程)更新UI了。先说一下它们的执行流程:Handler发送Message给MessageQueue,每个Looper里都有一个MessageQueue;调用Looper.loop()之后,Looper会不断的去MessageQueue里拿Message出来,然后原创 2020-09-29 02:05:23 · 166 阅读 · 0 评论 -
Android造轮子---支持网络图片的ImageView
本来打算增加支持本地缓存以加速图片加载速度,以及支持默认图片还有图片加载失败图片显示等功能,由于本人懒,所以搁置!因为都是测试时用的,所以功能写的很简单也不完善,仅供参考!直接上代码:import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Handler;import android.os.Messag.原创 2020-09-28 23:17:15 · 114 阅读 · 0 评论 -
Android造轮子---表单数据提交(支持多文件上传)
因为都是测试时用的,所以功能写的很简单也不完善,仅供参考!直接上代码:import android.os.Handler;import android.os.Message;import android.util.Log;import java.io.ByteArrayOutputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.原创 2020-09-28 23:05:23 · 276 阅读 · 0 评论