自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZBM来了

^_^路过的大神还望多多指教

  • 博客(39)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android笔记(三十):PorterDuffXfermode实现旋转进度View

这里采用DST_OUT模式,DST是覆盖在ImageView上的半透明遮罩,SRC是动态绘制的白色进度条,取两者相交的区域并显示DST的像素,就能实现视频中的效果。核心原理是使用PorterDuffXfermode + Path来绘制进度,并实现圆角。Android笔记(三十)效果演示。

2024-03-28 17:49:19 308 1

原创 Android笔记(二十九):利用python自动生成多语言

项目需要支持十几种多语言,而且每个版本的新功能ui都有很多地方需要多语言,如果手动添加非常耗时,于是设计了一个python脚本,通过excel表格转化多语言到项目values/strings文件内。

2023-09-11 22:55:13 360 1

原创 Android笔记(二十八):在雷电模拟器安卓7.0+上使用Charles抓包详细教程

由于手头没有合适的真机,所有经常使用雷神模拟器来跑项目,模拟器也需要能够抓包看看接口返回的数据,以便自测调试。本文记录了如何在雷电模拟器安卓7.0+上使用Charles抓包,其他模拟器没试过。

2023-09-06 17:50:24 5361 8

原创 Android笔记(二十七):自定义Dialog实现居中Toast

记录实现符合项目需求的Toast弹窗。

2023-08-23 20:59:56 802

原创 Android笔记(二十六):SDK接口防反射设计

利用Exception的接口返回方法调用栈,判断是否存在。的调用,是则为反射调用,直接抛异常中断方法继续执行。反射调用test接口会抛异常,正常调用则成功执行。

2023-03-07 22:00:22 170

原创 Android笔记(二十五):两种sdk热更插件资源加载方案

在研究sdk插件化热更新方式的过程中总结出了两套插件资源加载方案,在此记录下。

2023-02-26 16:53:06 1157

原创 Android笔记(二十四):gradle写一个android12自动适配exported脚本,支持aab

由于Google play的政策,提审aab的时候需要适配android12,适配android12最大的工作就是在AndroidManifesst.xml文件中声明的四大组件,都要显式声明exported字段。如果手动添加,在遇到第三方sdk时就会比较麻烦,所以只能使用gradle脚本自动添加,而网上给的gradle脚本例子都是只对apk生效,所以自己手动改造一下,以支持aab。遍历AndroidManifest.xml文件的每一个节点,识别到activity,receiver,service节点时,如果

2022-12-16 11:03:01 879

原创 Android笔记(二十三):以插件化APK方式启动带WebView的Activity

本文记录插件化学习过程中,如何以插件化apk方式启动带WebView的Activity,分三大步骤完成。

2022-11-28 01:18:09 624

原创 Android笔记(九):获取屏幕高度,状态栏高度,虚拟导航栏高度

本文通过画图的方式去理解如何获取屏幕高度,状态栏高度,虚拟导航栏高​​。

2022-11-18 17:14:55 2622

原创 Android笔记(二十二):Gradle自定义插件读取assets目录及修改AndroidManifest.xml

由于项目需求,需要在打出apk包前读取assets目录下的文件,以及修改打出的apk包的AndroidManifest.xml文件的权限。

2022-09-25 11:31:40 1644

原创 Android笔记(二十一):Gradle小技巧——自定义Task生成dex文件/修改assets目录下的文件

项目想用dex动态加载,而androidstudio java模块构建完成后会生成jar,需要手动转成dex文件,比较麻烦,因此可以自定义gradle task用于生成dex文件。

2022-09-23 17:29:58 1719

原创 Android笔记(二十):写一个图片文字识别SDK给自己用

市面上文字识别大多需要开通会员才能使用,所以决定自己封装一个sdk出来,供后面开发扫描类app提供便捷工具

2022-06-18 15:57:22 831 1

原创 Android笔记(十九):WebView浏览器多标签页(多窗口)功能新的实现

背景之前写过的文章——WebView+Fragment+ViewPager构建浏览器多标签页虽然实现了多标签页的功能,但是有个弊端就是随着创建的标签页数量增加,viewpager的滑动会越来越卡。之前一直没有时间优化,最近尝试着优化了一下,对Dainty浏览器的多标签页功能抽取出来,进行改造。...

2022-05-04 00:12:35 2981 1

原创 React Native笔记(三):解决在RN中使用Android原生WebView时输入框被遮挡问题

如题,在解决该问题前,上网搜了一下资料,找到了下面这个方案:Android webView输入框软键盘遮挡问题-终极解决方案(不好使你打我)但是,这在纯原生上可行,在rn上却没有效果。主要原因是rn有自己的一套布局测量绘制机制,导致在原生调用requestLayout()没有响应,经过几次实践,得出下面针对rn的解决办法。重写WebView的requestLayout方法,rn绘制时主动通知原生重新布局WebViewpublic class CusWebView extends WebView{

2022-04-27 10:32:21 897

原创 React Native笔记(二):ViewPager2嵌套rn组件滑动冲突解决思路

背景由于业务需求,要求使用原生的ViewPager2在rn中实现tab侧滑功能,而tab页面中会有水平滑动的FlatList列表,这样就会造成滑动冲突的情况。解决思路:因为ViewPager2被声明为final的,所以只能从FlatList去动手,于是本文基于谷歌官方的NestedScrollableHost进行改造。步骤改造NestedScrollableHost给rn使用用isFromRN字段标识该组件是由rn创建而来的ReactFindViewUtil.findView可以找到当前根view

2022-03-26 16:20:02 1664

原创 React Native笔记(一):封装android原生列表组件给rn使用

背景react native官方提供的FlatList与原生RecyclerView相比:仅创建可见区域的视图,两者是一致的。FlatList没有cell recycling,重用item view。FlatList中将不可见的视图从内存中移除,但同时也会导致大量的视图重新创建以及垃圾回收。如果不断的创建视图,在列表滚动的过程中,内存占用量会不断增加。而原生的recyclerview因为能复用视图,所以在快速滑动的时候性能上影响不大。并且rn又支持封装原生组件给rn使用,于是产生了封装recyc

2022-03-21 09:56:15 3442 4

原创 Android笔记(十八):ViewPager2嵌套WebView手势冲突问题

正常情况下,viewpage2嵌套webview会导致网页内容无法滑动,解决该问题的核心在与利用requestDisallowInterceptTouchEvent与onOverScrolled这两个方法重写WebView如下:public class NestedWebView extends WebView{ public NestedWebView(Context context) { super(context); } public NestedWeb

2022-03-20 19:00:01 1251

原创 Android 实测WebView获取页面的post请求参数(form,ajax)

背景由于项目需求要获取某些网页的请求参数信息,get请求的参数拼接在url中,所以可以直接拦截url获得,但是post请求的参数信息存放在body里面,android没有提供方法直接获取,而该网页是其他第三方提供的,不方便修改网页代码来传递参数给android原生这边,所以可以通过js注入的方式来获取。关键步骤js代码核心js代码下载jscore从文件中读取js代码为字符串,便于后面给webview加载public class IOUtils { public static byte[]

2021-11-27 14:20:18 4358 2

原创 Android NDK实践——开发AES加/解密工具包

背景将AES加密算法的秘钥放java源码层容易被反编译获取在C++层封装AES加/解密过程供java层调用目前支持AES加密模式CBC,填充方式:zeropadding,数据块128位,输出base64/hex流程新建Native C++工程目的是为了获取as自动生成的CMakeLists.txt,不用我们手动生成新建一个Library模块mylibrary将app模块的main目录下的cpp文件夹拷贝到mylibrary模块的main目录下修改mylibrary模块的build.

2021-08-02 12:00:08 929

原创 自建Tomcat完成Android App Links实践

Android App Links实践搭建Tomcat服务器(支持SSL)申请外网域名为域名申请阿里SSL证书修改conf/server.xml修改conf/web.xml按照androidstudio AppLinks Assist指引配置其中一步将assetlinks.json文件放进webapps/.well-known文件夹下真机验证搭建Tomcat服务器(支持SSL)申请外网域名使用nat123获得(外网映射tomcat本地网)为域名申请阿里SSL证书申请流程此处域名验证方式使用文件验

2021-07-25 14:43:13 254 4

原创 Android笔记(十七):Gradle配置多渠道资源签名打包

在app build.gradle下编辑1.配置不同渠道打包签名:android { ... signingConfigs { debug { keyAlias '' keyPassword '' storeFile file('xxx.keystore') storePassword 'android' } release { .

2020-10-09 15:59:43 580

原创 Android笔记(十六):Gradle脚本动态修改AndroidManifest.xml的MainActivity

在主模块build.gradle添加如下代码即可修改AndroidManifest.xml的MainActivity原理:利用Groovy XmlSlurper来改写xml文件import groovy.xml.XmlUtilthis.afterEvaluate { def manifestFile = "${projectDir}/src/main/AndroidManifest.xml def xml = file(manifestFile) def manifes

2020-10-09 14:13:37 2068

原创 Android笔记(十五):仿UC底部弹出菜单

效果图:v1.0.0是采用PopupWindow+Animation+阴影子Window来实现;v1.1.0是采用伸缩RelativeLayout+Animation+设置背景色来实现具体见:源码

2018-09-29 09:44:22 455

原创 Android笔记(十四):分析SingleTask和SingleInstance启动模式

ActivityA启动ActivityB(SingleTask模式):1.ActivityA与ActivityB在同一个应用• 任务栈中存在ActivityB,则不会创建新的,直接使用它(调用onNewIntent),并将它之上的Activity出栈•任务栈中不存在ActivityB,则在栈顶新建一个2.ActivityA在应用A,ActivityB在应用B• 应用B处于......

2018-06-09 12:59:39 3729

原创 Android笔记(十三):总结Activity更多生命周期方法回调顺序

官网图补充:回调方法顺序:1.App正常启动:onCreate->onStart->onResume->onWindowFoucusChanged2.启动后屏幕熄灭/Home返回App:onPause->onSaveInstanceState->onStop->onWindowFocusChanged3.屏幕重新亮起:onRestart->onStart-...

2018-06-09 10:01:26 749

原创 Android笔记(十二):API 19以上WebView缓存目录

Android4.4+当在项目中使用了WebView时,会在/data/data/package_name/目录下生成一个app_webview文件夹,而4.4以下则没有页面缓存:加载一个网页时的html,js,css等页面或者资源文件,这些缓存资源是由于webview的行为而产生,开发者只能通过配置http响应头影响浏览器的行为才能间接地影响到这些缓存数据。Android4.4以上存放在Cach...

2018-04-17 16:09:27 5386

原创 Android笔记(十一):MultiSelectListPreference设置监听的返回值

findPreference("MultiSelectListPreference's key").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Prefer...

2018-04-17 13:57:53 1161

原创 Android笔记(十):判断虚拟软键盘是否弹出

private boolean isSoftInputMethodShowing() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int usableH...

2018-03-06 13:04:45 361

原创 Android笔记(九):获取屏幕高度,状态栏高度,虚拟导航栏高度

通过getWindow().getDecorView().getHeight()或者DisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getRealMetrics(metrics); int realHeight = metrics.heightPixels; 可以获取屏幕像素高...

2018-03-06 13:00:22 2604

原创 Android笔记(八):理解解压zip文件过程(已解决中文乱码)

ZipExtractorTask类只能解压zip类型的压缩文件,并带有解压过程对话框,有待完善解压非zip文件的提示。public class ZipExtractorTask extends AsyncTask<Void, Integer, Long> { private final String TAG = "ZipExtractorTask"; private F...

2018-02-09 18:30:04 3373

原创 Android笔记(七):app混淆签名打包过程记录

1.配置模块下的build.gradle文件:apply plugin: 'com.android.application'def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))}android { compileSdkVersion 26 de...

2018-02-06 14:07:14 447

原创 Android笔记(六):RecyclerView实现上/下滑隐藏/显示顶部搜索栏(item可点击)

效果如下:主界面界面布局:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_h

2018-01-18 22:50:31 6240 2

原创 Android笔记(五):利用多线程可断点下载远程文件(已解决文件名含有中文)

本文记录用多线程来下载文件(支持断点)FileDownloadController类控制整个文件下载过程,外部通过实例化FileDownloadController对象设置下载过程监听并调用startDownload方法即可开始下载文件。public class FileDownloadController { private static final int START = 0; ...

2018-01-15 10:19:49 274

原创 Android笔记(四):Service的启动和停止对生命周期的影响

Service的启动方式有三种,每种对于其生命周期的影响不同,而且停止服务的方式也不太一样。下面分情况说明(在此之前后台不存在服务进程):①只通过startService启动服务:Service会依次调用onCreate,onStartCommand。此后再调用startService只调用onStartCommand。当调用stopService会调用onDestroy销毁服

2017-12-03 20:43:29 454

原创 亲测~Win10开启系统自带Wifi热点步骤

本文记录如何用命令行开启Win10自带的wifi热点。1)以管理员身份打开命令提示符,输入“netsh wlan show drivers”,找到“支持的承载网络”一项,如果为“是”,说明电脑支持开启wifi热i点,可继续下面的步骤。2)接着输入“netsh wlan set hostednetwork mode=allow ssid=wifi名称 key=wifi密码”。3)接着输入

2017-12-03 10:21:38 12163 8

原创 Android笔记(三):整理——利用http上传小文件

本文记录如何使用rfc1867协议来上传文本文件(大小不能超过2M)首先客户端上传文件时,服务器要收到客户端的请求就必须在客户端人工构造rfc1867协议规定的请求内容。具体如下:--UUIDContent-Disposition:form-data;name="字段名"Content-Type:text/plain;charset=UTF-8       //如果上传

2017-12-02 15:17:16 365

原创 Android笔记(二):网络图片加载器

可以根据url地址来加载图片,并缓存。public class AsyncImageLoader { final Handler handler = new Handler(Looper.getMainLooper()); private HashMap> imageCache; String title; //图片对应的标题 public AsyncIma

2017-12-01 15:57:12 226

原创 Android笔记(一):ViewDragHelper实现底部上滑同时底部下滑

先看看效果图:自定义布局控件:public class DragLayout extends FrameLayout { private int title; //限制上滑后的顶部标题高度大小 private Status mStatus = Status.Open; //默认底部是不上滑的 private View mTopCont

2017-12-01 11:08:24 1087

原创 WebView+Fragment+ViewPager构建浏览器多标签页

public class MyViewPager extends ViewPager implements OnGestureListener{ private boolean isFullScreen=true; //用于标识viewpager是否拦截事件,防止影响标签的左右滑动 private OnLayoutClickListener lc; private

2017-11-21 13:53:59 3461 3

内存填充工具fill-ram-memory

用于模拟应用在低内存环境下的运行情况

2024-03-20

xls-convert-strings.py

Android笔记(二十九):利用python自动生成多语言文章内用到的脚本源码 原文地址:https://blog.csdn.net/weixin_40855673/article/details/132819008

2023-09-11

ProxyDroid.apk

Android笔记(二十八):在雷电模拟器安卓7.0+上使用Charles抓包详细教程文章内用到的apk

2023-09-06

完整gradle脚本-Android笔记(二十四):gradle写一个android12自动适配exported脚本,支持aab

以上脚本给出了文章提到的代码片段如何引入项目中,并且是经过反复实测的,打包aab/apk时能自动添加exported字段,如果遇到任何问题,请邮件联系[email protected],有更好的解决方法欢迎一起交流

2022-12-16

图片识别sdk aar接入

图片识别sdk aar接入

2022-06-18

本人亲测~拦截post请求关键js代码

拦截post请求关键js代码 文章源地址: https://blog.csdn.net/weixin_40855673/article/details/121575150?spm=1001.2014.3001.5501

2021-11-27

aes-library.rar

AES加解密工具C++库,含有base64编码解码函数

2021-08-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除