
Android
文章平均质量分 69
Alex233小卢
这个作者很懒,什么都没留下…
展开
-
写一个MVVM快速开发框架(二)组件化改造
组件化思想组件化对于各个领域都已经不是新鲜的词汇了,在Android上组件化已经遍地开花了,这里只是记录一下我对组件化的理解,有不对的地方请大家指出。组件化是为了解决什么问题优秀的工程项目应该满足高内聚低耦合思想,各个功能有明显的边界划分,各个模块各司其职,至少在修改的时候不是牵一发而动全身,其他人在接手的时候也能快速理解。如果你的项目存在一下问题,可以考虑使用组件化了:代码耦合严重,eventbus满天飞依赖严重,编译慢功能模块界限不清晰多人开发的时候经常发生合并冲突组件化的存在原创 2021-08-11 16:15:14 · 562 阅读 · 0 评论 -
写一个MVVM快速开发框架(一)基础类封装
DEMO地址在最后,求个Star???? 如有问题请指出前言最近想要将老项目用MVVM模式去重构,原来的App采用MVP+MVVM的混合模式,老项目嘛大家都懂,最开始用MVP,后来慢慢改成MVVM,但是又没完全重构,所以整个项目看起来乱糟糟的,每次新加功能的时候写的那叫一个难受。工欲善其事必先利其器用MVVM+Jetpack组件的优点就不用我说了,写过的人肯定都说爽,此次就是想要重新整理下一些基础开发工具,封装一个自己用的顺手的MVVM模式快速开发框架。一是平常用来写测试,二是以便在需要的时候快速原创 2021-07-28 18:15:55 · 727 阅读 · 0 评论 -
Android各版本存储行为的变化
总所周知Android上的存储权限一直在更改,从Android增加file provider,到Android10增加分区存储,Google对于存储权限管理越来越严格。我们聊一下Android上的存储Api兼容性适配。1. 应用存储空间应用保存数据的方式有如下:文件和媒体数据可以保存在“应用专属存储空间”和“公共存储空间之中”短数据或者偏好设置可以通过sharePreference保存数据库外部存储以前的手机是存在SDcard的,但目前很多手机都取消了SDcard,Android上引入了原创 2021-07-22 10:22:25 · 1050 阅读 · 0 评论 -
Android利用Chorme调试app内部webview
目标因为app内部嵌套网页出现了一些小问题,但是在pc浏览器上加载是可行的,所以进入了app和前端的扯皮阶段,为了找出真正的原因,需要调试app内部的webview。调试步骤1.Android真机开启usb调试2.开启Chorme浏览器调试模式按F12进入浏览器模式,右边有三个点,选择more tools,选择Remote devices调试。3.配置 WebViews 进行调试if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKA原创 2021-03-15 11:58:25 · 1064 阅读 · 0 评论 -
Android将Library、module打包成aar使用
1.打包aar1.1 实例:如下一个是主App,另一个是Library1.2 点击data_sdk,选择Build-Make Moduel"data_sdk",等待编译完成1.3 在builde-outputs-aar中找到编译文件,debug和release类型可以根据buildVariants选择2.使用aar文件2.1 在需要使用的module中导入aar文件新建libs文件夹,导入aar文件2.2 导入依赖在build.gradle中添加:android{......原创 2021-03-01 16:58:41 · 1779 阅读 · 0 评论 -
Android自定义不规则裁剪
需求:实现一个不规则裁剪View,以前的实现方式不太优雅,和布局嵌套在一起耦合性太高,所以想将裁剪框和图片封装在一个View中。实现效果如下直接将代码,不多BB具体请看Git demo,欢迎Star,forkpackage com.xlu.cropimage;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Bitmap;import andro.原创 2021-02-20 16:27:23 · 1357 阅读 · 2 评论 -
Navigation问题合集
Navigation问题合集1.Navigation重复点击导致崩溃解决办法一:设置view的重复点击事件解决方案二: fun navigate(destination: Int, bundle: Bundle?) = with(findNavController()) { currentDestination?.getAction(destination)?.let { navigate(destination,bundle) }原创 2020-12-29 12:30:21 · 459 阅读 · 0 评论 -
MVVM+Jetpack+Kootlin实践项目
WanAndroid-MVVM-kotlin简介:此版本WanAndroid采用MVVM架构设计,kotlin语言编写,是对jetpack组件和主流第三方框架的一个实践。后续会不断维护改进,有问题请提交issues下载体验采用的主流开发库: //navigation api 'androidx.navigation:navigation-fragment:2.3.0' api 'androidx.navigation:navigation-ui:2.3.0' api原创 2020-09-01 16:57:45 · 336 阅读 · 0 评论 -
Android自定义View实现饼状图(可点击旋转)
效果图如下:废话不多说,直接上代码,具体实现请自动动手:package com.example.pieviewdemo;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Path;import android.graphics原创 2020-05-12 16:34:00 · 762 阅读 · 0 评论 -
Android系统的启动过程解析
init.rcandroid设备启动必须经历三个阶段,即BootLoader、Linux kernal、Android系统服务实际上Android是运行在Linux上的一系列进程,严格来说并不算操作系统,Android中第一个启动的进程就是init。 init的PID为0,它通过解析init.rc脚本来构建系统的初始运行状态,是开发商用来控制去Android启动状态的一大利器。i...原创 2020-04-19 15:20:17 · 248 阅读 · 1 评论 -
Deepin下载Android源代码并编译
1.下载Git$ sudo apt-get install git终端中输入Git验证是否安装完毕2.安装pythonsudo apt-get install python3.安装curlsudo apt-get install curl4.下载Repo$ cd ~ #进入主目录 $ mkdir bin ...原创 2020-04-14 17:04:17 · 1047 阅读 · 1 评论 -
Android系统给第三方app签名流程
Android应用系统签名流程Android系统中的app分为系统app和第三方的app,他们处在不同的目录下,一般厂家会有一套统一的私密签名文件,肯定不会开放。我们这里的签名只是正对自己编译的系统,或者是原生系统,比如开发版。签名后的文件只能在目标系统中使用。注意:app在打包的时候,修改原app的 AndroidManifest.xml文件,在 <mainfest ....原创 2019-10-18 10:53:57 · 4253 阅读 · 1 评论 -
Mac下编译LibjpegTurbo
Mac平台编译Libjpegturbo的优势:我尝试过在windows,linux(Ubuntu),mac下用不同的方式来编译,最后实际测试,在mac平台下,用cmake(非AS自带)编译性能是最好的。1.Debug与Release版本区别:debug主要用于测试,release主要用于正式版本。按道理是一样的,但是在实际测试过程中发现,debug版本性能非常差劲,在Android上的...原创 2019-09-05 17:40:23 · 1342 阅读 · 0 评论 -
Android解析动态网页(求问!!)
有时候想做个demo,经常用到别的网页数据,一般都是通过jsoup解析。但是jsoup不支持解析动态网页,这真的很难受了,很多网页数据都是动态加载的。在jsoup输出的网页代码中明明可以看到js动态部分的数据,可就是解析不出来。求问大家有什么好的方法,在android上实现爬取动态网页!!...原创 2019-03-02 01:16:12 · 1053 阅读 · 0 评论 -
AndroidStudio-ADB无线连接多台真机调试及相关问题
最近升级AS后——4/2号,adb连接手机的时候一直报错,AS版本如下:一般adb连接流程:adb tcpip 5555adb connect 手机ip但是在升级后端口好像变了:5037可以试下换端口:adb connect ip:5555adb connect ip:5037相关链接:https://stackoverflow.com/questions/55...原创 2019-04-02 09:52:57 · 2167 阅读 · 0 评论 -
Android ConfigChanges属性详解
最近在Android开发中遇到了多语言的设置问题,语言随系统语言变化。问题:系统语言改变后,activity会调用onDestory()重启,然后重启onCreate(),因此一些体验非常不好。解决办法:在activity中配置: android:configChanges="locale|layoutDirection|keyboard"至少在MIU...原创 2019-05-23 12:08:49 · 2319 阅读 · 0 评论 -
MediaProjections in Android Q(Media projections require a foreground service)
设备:pixel2xl Android Q beat4在给应用做适配测试的时候,发现MediaProjection报错了,如下:java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PR...原创 2019-07-19 17:35:26 · 19961 阅读 · 16 评论 -
Android ImageReader获取图像数据并保存在本地
8月份的blog:记录一下工作中的经历。ImagerReader:官网:https://developer.android.com/reference/android/media/ImageReader.htmlImageReader可以直接获取屏幕渲染数据,得到屏幕数据后自己想干嘛就干嘛。得到的数据是image格式,这个数据从系统内核分发到我们get到,平均延迟是30ms。如下图。...原创 2019-08-16 16:49:18 · 21461 阅读 · 12 评论 -
JNI学习之旅
最近在工作中要用到C库,利用jni与native通信,如果不熟悉C语言,jni刚开始真的让人头大。也下定决心好好学习JNI和C++了。JNI基础语法:我是看的一个博主的blog,如下: Android JNI 基本操作 Android JNI 数组 操作 Android 通过 JNI 访问 Java 字段和方法调用 Android JNI 调用时缓存字段...原创 2019-08-16 17:00:45 · 173 阅读 · 0 评论 -
【Android】Windows平台下编译LibjpegTurbo的静态库.a文件和动态库.so文件
LibjpegTurbo:既然你看到这篇文章了,大概了解了LibjpegTurbo的作用了。这里不做多的介绍,官方生成LibjpegTurbo速度能提升2-6倍,根据实际测试,Turbo版本确实有提升,但是1.5.x版本和2.0.x版本速度差距较大,我们选择最新的release版本libjpeg2.0.2,在这里下载:https://sourceforge.net/projects/libjp...原创 2019-09-05 11:30:45 · 887 阅读 · 0 评论 -
runOnUiThread导致的BottomBavigationView+Fragment显示错乱
不要在子线程中执行runOnUiThread!!!!有次遇到在子线程中执行网络操作获取数据,为了方便直接用runOnUiThread在子线程中执行了UI操作,虽然这样做不会直接报错,但是如果你的网络操作没有执行完,你跳到了其他界面,很有可能出问题。比如BottomBavigationView+Fragment创建的导航界面,在其中一个fragment执行上述的操作,点击其他...原创 2019-03-01 11:13:16 · 214 阅读 · 0 评论