
Android
文章平均质量分 64
gf771115
这个作者很懒,什么都没留下…
展开
-
Android--沉浸式导航栏适配
本文是用于设配SDK4.4到5.0的沉浸式导航栏适配(4.4下面的实现不了沉浸式),上次说到适配沉浸式状态栏时,为DecorView添加一个View可以是实现,导航栏也同样,但是不是所有手机都有导航栏,所以我们先要判断手机有没有导航栏转载 2022-09-25 22:07:01 · 1686 阅读 · 0 评论 -
Android内核日志记录参考
Android内核日志记录参考转载 2022-08-20 10:44:37 · 947 阅读 · 0 评论 -
RecyclerView嵌套滑动冲突解决
如今咱们有竖向滑动的RecyclerView,在每一个item内部又嵌套了一个横向滑动的RecyclerView,那么咱们手指在滑动RecyclerVIew时,究竟是竖向的响应仍是横向的响应呢?java如图:红色线为手指滑动距离,右上方滑动到左下方;绿色为竖向滑动距离;蓝色为横向滑动距离;咱们的指望是若是手指滑动的横向距离大于竖向距离的话就响应竖向的外层RecyclerVIew的滑动;若是手指移动的竖向距离大于横向距离,则滑动内部的横向的RecyclerView。git总体效果以下,完整项目:h转载 2022-05-15 16:01:21 · 738 阅读 · 0 评论 -
Coordinatorlayout+ recyclerview滑动冲突解决方案
看过我博客的小伙伴应该知道,我比较多的都是集成高德地图的博客,作的过程当中也遇到不少问题,感谢各位大佬的指点,每次解决问题后,以为之后可能还会遇到,我就会来写博客。java今天也不例外,由于项目里面用到了高德的搜索,因此有结果页显示,由于咱们项目是高度集成的高德地图,因此不少控件,或者高德不经常使用的方法都找不到,话很少说。android此次项目需求是:作成和高德地图同样,搜索结果页有三级滑动,而且有列表,有列表固然用listview或者是Recyclerview,这里建议你们用Recyclervi转载 2022-05-15 08:12:04 · 1969 阅读 · 0 评论 -
Android | 自定义上拉抽屉+组合动画效果
Android技术152 篇文章0 订阅订阅专栏作者:I王小一话不多说先来个效果图看一下实现的主要功能就是上拉抽屉(解决了子view的滑动冲突)+ 边缘动画 + 中间小球和seekbar效果动画。黄色部分就是上拉抽屉整体,绿色部分是横向的recyclerview。有个朋友说有阻尼效果就完美了 … 因为效果图没有阻尼效果,所以就没有去研究 - -!先总结一下主要用到的技术ScrollView + NestedScrollingParent + NestedScrollingChild (.转载 2022-05-02 08:40:53 · 1714 阅读 · 0 评论 -
关于Android Service真正的完全详解,你需要知道的一切
转载请注明出处(万分感谢!):http://blog.youkuaiyun.com/javazejian/article/details/52709857出自【zejian的博客】 Service全部内容基本会在本篇涉及到,我们将围绕以下主要知识点进行分析:Service简单概述Service在清单文件中的声明Service启动服务实现方式及其详解Service绑定服务的三种实现方式关于启动服务与绑定服务间的转换问题前台服务以及通知发送服务Service与线程Thread的区别管理服务生命周转载 2022-03-25 19:43:03 · 800 阅读 · 0 评论 -
Android 23种设计模式
转自:Android 23种设计模式 - 简书Android 23种设计模式1、Android 单例模式2、Android Builder模式3、Android 原形模式(深浅拷贝)4、Android 工厂模式5、Android 策略模式6、Android 状态模式7、Android 责任链模式8、Android 命令模式9、Android 观察者模式10、Android 备忘录模式11、Android 迭代器模式12、Android 模板方法模式13、Android 访问者转载 2022-03-25 19:39:58 · 4272 阅读 · 0 评论 -
LifeCycle、ViewModel、LiveData 的组合使用
把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。实例:Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。这样做有什么好处呢?解释:假如现在有N多个类,需要用到Class B,那就需要在类里面实例化N多次,这样对于后期的维护和管理都是不方便的,如果后期需求转载 2021-08-01 07:58:00 · 511 阅读 · 0 评论 -
Android Room By Kotlin
最近在kotlin环境下,写了一个room数据库的demo,各种情况跑了一下,在此总结一下。涉及情况:增、删、改、查、排序1、环境搭建1.1、Android Studio下,新建一个kotlin项目,1.2、去app的build.gradle中进行一些配置顶部增加apply plugin: 'kotlin-kapt'1然后defaultConfig { ...... javaCompileOptions { annotatio...转载 2021-07-25 21:31:15 · 364 阅读 · 0 评论 -
git如何移除某文件夹的版本控制
目录结构如下project bin lib src ...... 执行如下的操作git add .git commit -m "add bin/ lib/ src/"git push origin master突然发现原来lib目录不需要提交到版本库,但是现在远程已经存在该目录,what should I do.(吐出去的东西还能收回来吗)万能的Git啊,help me!功夫不负有心人,找到了解决问题的方法,其实就是gitrm...转载 2021-07-25 11:11:52 · 511 阅读 · 0 评论 -
git删除指定commit
1.使用git log 命令,查看已提交的记录。例如红色圈出的commit是本次要删除的commit。2.先找到此次提交之前的一次提交的commit 1d6b81b138f89735265900b94fcd1ec39375e7b43.执行git rebase -i1d6b81b138f89735265900b94fcd1ec39375e7b4,弹出如下页面(不包含当前commit):按字母I键进入编辑模式,将需要删除的commit的pick改为drop,然后按esc退出编辑,:.转载 2021-07-17 22:43:34 · 843 阅读 · 0 评论 -
Git Reset 三种模式
有时候,我们用Git的时候有可能commit提交代码后,发现这一次commit的内容是有错误的,那么有两种处理方法:1、修改错误内容,再次commit一次 2、使用git reset 命令撤销这一次错误的commit第一种方法比较直接,但会多次一次commit记录。而我个人更倾向第二种方法,错误的commit没必要保留下来。那么今天来说一下git reset。它的一句话概括git-reset - Reset current HEAD to the specified state意思就转载 2021-07-17 22:02:17 · 317 阅读 · 0 评论 -
Android九宫格控件-可在ListView和RecyclerView中使用
需求场景熟悉Android App开发的同学,肯定都清楚,如果要显示多张图片,类似九宫格,可以用GridView或者GridLayout来做,但是如果需求要求在ListView或者recyclerView 的每个item中都显示这样一个九宫格,那么GridView就不适用了,GridLayout可以实现,但是不是那么优雅,我们需要在item每次重绘时,加入添加或者删除逻辑。既然框架没有提供满足需求的控件,我们只能自己实现。思路我们需要显示多张图片,那么肯定选择ViewGroup无疑,其实也就是一转载 2021-07-14 22:22:42 · 1558 阅读 · 1 评论 -
Androidx RecyclerView(一 ): 基本使用
一、用法:RecyclerView和其他用于界面数据滑动展示的控件(GridView,ListView,Spinner等)一样,都少不了数据源,适配器,以及监听逻辑处理这三块。下面就来讲解写RecyclerView的使用方法:1.引用(导包)2.布局文件引用3.构造适配器4.主程序,包括数据源以及逻辑处理等上两个简单的效果图:StaggeredGridLayoutManager 以瀑布流方式展示ItemimageLinerLayoutManager 以垂直或者水平列表方式展示I转载 2021-07-14 21:35:44 · 971 阅读 · 0 评论 -
Gradle史上最详细解析
郑重申明本文转自邓凡平老师的http://www.infoq.com/cn/articles/android-in-depth-gradle/前言对于Android工程师来说编译/打包等问题立即就成痛点了。一个APP有多个版本,Release版、Debug版、Test版。甚至针对不同APP Store都有不同的版本。在以前ROM的环境下,虽然可以配置Android.mk,但是需要依赖整个Android源码,而且还不能完全做到满足条件,很多事情需要手动搞。一个app如果涉及到多个开发者,手动操作必然.转载 2021-07-01 21:19:14 · 3298 阅读 · 1 评论 -
利用databinding快速实现RecyclerView的adapter,支持多种item
简介Room持久库提供了一个SQLite抽象层,让你访问数据库更加稳如狗,提示数据库性能。Room库帮助应用数据缓存,这个缓存是应用唯一的真实来源,并且允许用户查看应用中的关键信息的一致副本。导入库dependencies { def room_version = "1.1.1" implementation "android.arch.persistence.room:runtime:$room_version" annotationProcessor "an转载 2021-06-24 08:47:09 · 1256 阅读 · 0 评论 -
Android单元测试只看这一篇就够了
单元测试是应用程序测试策略中的基本测试,通过对代码进行单元测试,可以轻松地验证单个单元的逻辑是否正确,在每次构建之后运行单元测试,可以帮助您快速捕获和修复因代码更改(重构、优化等)带来的回归问题。本文主要聊聊Android中的单元测试,主要内容如下:单元测试的目的以及测试内容 Android中的单元测试分类 JUnit注解 本地单元测试 仪器化单元测试 常用的单元测试开源库 实践经验 其他一、单元测试的目的以及测试内容为什么要进行单元测试?提高稳定性,能够明确地了解是否正确的完成转载 2021-06-06 11:51:25 · 2126 阅读 · 0 评论 -
Android Gradle 插件版本说明
Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于构建 Android 应用的功能。虽然 Android 插件通常会与 Android Studio 的更新步调保持一致,但插件(以及 Gradle 系统的其余部分)可独立于 Android Studio 运行并单独更新。本页将介绍如何让 Gradle 工具保持最新状态,以及最近的更新包含哪些内容。如需详细了解如何使用 Gradle 配置 Android build,请参阅以下页面:转载 2021-05-16 23:12:53 · 3123 阅读 · 0 评论 -
开始使用Android CameraX
安卓中使用相机从来就不是一件容易的事。Camera1要自己管理Camera相机实例,要处理SufraceView相关的一堆东西,还有预览尺寸跟画面尺寸的选择,页面生命周期切换等等问题。。。后来推出了Camera2,从官方Demo就上千行代码来看,Camera2并不解决用起来复杂的问题,它提供了更多的调用接口,可定制性更好,结果就是对普通开发者来说更难用了。。。终于Google也意识到这个问题,推出了最终版CameraX. CameraX实际上还是用的Camera2,但它对调用API进行了很好的转载 2021-05-16 22:44:40 · 664 阅读 · 0 评论 -
Gradle 完整指南(Android)
来源https://juejin.im/entry/57c7a00e0a2b58006b1a1358参考https://juejin.im/post/5e924273f265da47f079379c为什么需要学Gradle?Gradle 是 Android 现在主流的编译工具,虽然在Gradle 出现之前和之后都有对应更快的编译工具出现,但是 Gradle 的优势就在于它是亲儿子,Gradle 确实比较慢,这和它的编译过程有关,但是现在的Gradle 编译速度已经有了成倍提高。除此之外...转载 2021-05-09 21:06:56 · 361 阅读 · 0 评论 -
我所搭建的MVVM设计模式的Android框架(一)
写在前面:之前只是总在别人嘴里听说MVVM的设计模式,可能是因为环境问题,主要原因还是自己懒惰吧,只是听说却从未见过。直到最近到了新公司接手的别人的项目才发现,还有这种操作(其实就是看到了DataBinding)?感觉像发现了一个新大陆,也燃起了我重新开始写文章的想法。在此我要感谢我的新公司,也要感谢这个让我接触到新知识的这个陌生人,后面这个系列的文章都是从他这个项目基础上修改后抽离出来生成的依赖。最后,希望自己能坚持把这个系列写完吧。下面开始都是我自己的理解,身边也没有能指导我的人,我也是摸着石头过河转载 2021-05-09 20:58:38 · 297 阅读 · 0 评论 -
Android RxJava 2 的用法 just 、from、map、subscribe、flatmap、Flowable、Function、Consumer ...
先简单说说RxJava的用途与价值用途: 异步 (也就是开线程跳转)价值: 面对复杂的逻辑,它依然 简洁 ,代码 易读RxJava2 与 RxJava 最大的不一样的地方,就是 Flowable ,这个 Flowable 取代了Rxjava 中的简单的使用:下面展示一段代码:Flowable .fromArray(weeks) .map(new Function<String, String>() { @Override...转载 2021-05-08 20:59:55 · 541 阅读 · 0 评论 -
Android调用另一个App界面
最近年底了,项目比较忙,虽然用笔把要总结的技巧来技术写下了,但是一直没有时间来更新。今天要说的是在App中调用其他APP界面的总结,我们经常需要给别的程序调用自己程序的UI界面,这时可以有三种方式来提供调用。1、使用隐匿intent的方式调用,这种方式是比较推荐的,也比较简单首先在自己应用的Mainifest.xml中加入如下代码:<activity android:name="com.mhwang.test.CallActivity" android:launchMo...转载 2021-05-06 23:04:10 · 998 阅读 · 0 评论 -
Android-APK签名工具-jarsigner和apksigner
一.工具介绍jarsigner是JDK提供的针对jar包签名的通用工具,位于JDK/bin/jarsigner.exeapksigner是Google官方提供的针对Android apk签名及验证的专用工具,位于Android SDK/build-tools/SDK版本/apksigner.bat不管是apk包,还是jar包,本质都是zip格式的压缩包,所以它们的签名过程都差不多(仅限V1签名),以上两个工具都可以对Android apk包进行签名.1.V1和V2签名的区别在Androi转载 2021-05-04 17:18:28 · 1596 阅读 · 1 评论 -
Android Gradle多版本打包
项目需求:一个项目相同的业务逻辑,要求打出不同版本的包,每个包的包名不相同。经过资料查询,需要在Gradle中完成一些配置即可。1、在src目录下添加不同版本对应的文件,以及在各个文件下面配置不同的资源文件。这里写图片描述2、在gradle中进行相关配置。在productFlavors下配置不同需求的包,在src下配置的文件和productFlavors下的文件需要一一对应。productFlavors{ flavors_dev{//此处的名字和productFlavors下的文...转载 2021-05-04 17:08:27 · 243 阅读 · 0 评论 -
Android 系统签名实现的三种方式
在项目开发时,如果需要使应用具有系统权限,例如可以支持静默安装和卸载APK,此时就需要使用系统签名。常用的系统签名方式包括在ubuntu环境下、手动签名和在AndroidStudio环境配置,三种方式中,实现最简单的是通过AndroidStudo方式,该方式的签名实现与正常的APK签名相同,唯一不同的就是签名文件是通过系统生成的。注意,无论采用何种签名方式,如果想实现具有系统权限的应用,在APK生成时,都需要在AndroidManifest.xml中配置android:sharedUserId=“and转载 2021-05-04 17:07:09 · 3413 阅读 · 0 评论 -
Android Gradle权威指南
1.Android Gradle插件介绍 我们知道Android起始就是Gradle的一个第三方插件,它是由Google的Android开发团队开发的。但从Android的角度来看,Android插件是基于Gradle构建的,和AndroidStudio完美无缝搭配的新一代构建系统。2.Android Gradle插件分类在Android中有3类工程 1.App应用工程,他可以生成一个可运行的apk应用。 App插件id :com.android.application 2.L转载 2021-05-04 16:48:37 · 880 阅读 · 0 评论 -
Android进阶之路 - Jadx快速实现反编译
在jadx出现之前,我一般是使用apktool和dex2jar这两个Android反编译工具。这两个工具也有不同的侧重点,如果只是想拿到apk里的一些图片或其他资源或是查看一下布局的layout文件,直接使用apktool -d xxx.apk即可。如果是要查看一下代码实现,就使用d2j-dex2jar.sh反编译一下apk然后使用jd-gui工具查看反编译后的.jar文件。apktool+dex2jar+jd-gui一直是一个比较流行的Android反编译组合。 在使用过jadx之后觉得jadx相比上转载 2021-05-04 16:22:46 · 572 阅读 · 0 评论 -
Kotlin传递函数作为参数的方式
Kotlin传递函数作为参数,可以有:命名参数,位置参数以及在参数列表外,以lamba的形式传递。示例dataclassPerson(valname:String,valage:Int=0,valshowMsg:(msg:String)->Unit)命名参数valp=Person(name="张三",age=18,showMsg=::println)位置参数...转载 2021-05-01 22:28:51 · 5957 阅读 · 0 评论 -
Kotlin极简教程:第8章 函数式编程
原文链接:https://github.com/EasyKotlin值就是函数,函数就是值。所有函数都消费函数,所有函数都生产函数。"函数式编程", 又称泛函编程, 是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。它的基础是 λ 演算(lambda calculus)。λ演算可以接受函数当作输入(参数)和输出(返回值)。和指令式编程相比,函数式编程的思维方式更加注重函数的计算。它的主要思想是把问题的解决方案写成一系列嵌套的函数调用。就像在O.转载 2021-05-01 22:20:12 · 537 阅读 · 0 评论 -
Android JetPack架构篇,一个实战项目带你学懂JetPack
第五届世界互联网大会昨日开幕,来自76个国家的1500余位嘉宾出席大会。腾讯公司董事会主席兼首席执行官马化腾在大会开幕式演讲中表示,全球产业都在进行数字化,在此期间机遇挑战并存,产业互联网机会巨大。作者简介本篇来自walker不抽烟的投稿,给大家介绍一下 Android JetPack架构相关知识。一起来看看!希望大家喜欢。walker不抽烟的博客地址:https://blog.youkuaiyun.com/itismelzp前言本文翻译自:Android Room with a View.转载 2021-05-01 20:40:57 · 951 阅读 · 0 评论 -
Android Jetpack学习
前言即学即用Android Jetpack系列Blog的目的是通过学习Android Jetpack完成一个简单的Demo,本文是即学即用Android Jetpack系列Blog的第一篇。记得去年第一次参加谷歌开发者大会的时候,就被Navigation的图形导航界面给迷住了,一句卧槽就代表了小王的全部心情~,我们可以看一下来自网络的一张图片:所以,Android Jetpack学习之旅就开始了。本人打算每周学习一个组件(上图的左上区域),最后将所学的组件组成一个简单的Demo。同时,刚刚过去转载 2021-05-01 20:17:30 · 345 阅读 · 0 评论 -
Android 使用hilt注入viewmodel
Dependency Injection is the first step you have to take towards building an app that can be tested. So today we will use Hilt to introduce view model injection into a Fragment. If you wish to carry along with this article you can checkout the starting code转载 2021-05-01 19:28:06 · 3493 阅读 · 0 评论 -
Kontlin之Rx+Retrofit实战(豆瓣列表)
应用宝动态截屏2017051901.gif用到的资源库 compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroid:1.1.0' compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' compile 'com..转载 2021-04-29 22:34:59 · 135 阅读 · 0 评论 -
Android MVP 框架搭建
前言本文主要根据自身项目的使用和对MVP的理解,搭建符合自身项目情况的MVP架构。关于MVPM(Model)负责数据的请求,解析,过滤等数据操作。V(View)负责处理UI,通常以Activity Fragment的形式出现。P(Presenter)View Model中间件,交互的桥梁。MVP的好处分离了UI逻辑和业务逻辑,降低了耦合。Activity只处理UI相关操作,代码变得更加简洁。UI逻辑和业务逻辑抽象到接口中,方便阅读及维护。把业务逻辑抽到Presenter中去,避免复杂转载 2021-04-27 22:24:28 · 537 阅读 · 0 评论 -
Android 深色模式适配原理分析
背景从Android10(API 29)开始,在原有的主题适配的基础上,Google开始提供了Force Dark机制,在系统底层直接对颜色和图片进行转换处理,原生支持深色模式。深色模式可以节省电量、改善弱势及强光敏感用户的可视性,并能在环境亮度较暗的时候保护视力,更是夜间活跃用户的强烈需求。对深色模式的适配有利于提升用户口碑。 转载请注明来源「Bug总柴」深色模式在安卓上可以分为以下四种场景: 强制深色模式 强制浅色模式 跟随系统 低电量自动切换深色 以下将转载 2021-04-27 21:53:26 · 1631 阅读 · 0 评论 -
Android中反射的简单应用
自己对反射的理解和应用还处于比较浅显的阶段,写这篇文章更多在于整理总结,也就是帮助自己进一步的理解和学习反射机制。反射反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。java中类反射反射是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性和方法。简单总结这些定义,那就是反射可以让我们获得一个类的所有信息,包括私有属性和私有方法,对于我们这种小白,先知道这点就转载 2021-04-26 23:23:24 · 298 阅读 · 0 评论 -
Android Studio 3.6.2 | 包目录以此层级展示
最近的项目重构 ing,有了不少的新想法,新思路,这里感谢我鸡老大~发现更新了 Android Studio 3.6.2 之后好多东西变得很陌生,比如包目录的展示方式:如果单纯的创建目录,且目录下没有文件,则目录结构平铺,很湿不方便,调整方案如下:将“Compact Middle Packages”取消勾选即可,效果如下:哦可~点滴积累~万一追赶上鸡老大了呢~————————————————版权声明:本文为优快云博主「HLQ_Struggle」的原创文章,遵循CC 4.0 BY转载 2021-04-26 23:17:26 · 251 阅读 · 0 评论 -
[Android开发] Xposed 插件开发之一: Xposed入门
一、什么是XposedXposed Framework 为来自国外XDA论坛(forum.xda-developers.com)的rovo89自行开发的一个开源的安卓系统框架。它是一款特殊的安卓App,其主要功能是提供一个新的应用平台,玩家们安装Xposed框架后,就能够通过Xposed框架搭建起的平台安装更多系统级的应用,实现诸多神奇的功能。Xposed框架的原理是修改系统文件,替换了/system/bin/app_process可执行文件,在启动Zygote时加载额外的jar文件(/data/转载 2021-04-26 22:39:57 · 1008 阅读 · 0 评论 -
Android webview数据获取 webview抓取
总结下 Android下 webview的数据获取、抓取。先说总结的情况方法一:给webview setWebViewClient,然后重写shouldInterceptRequest,获取请求参数,自己发起请求,返回WebResourceResponse。方法二:WebViewClient 的onPageFinished 方法里面注入js,来获取html如果是自己应用很简单,如果是其他APP,就是找Hook点,拿到webview,找到设置的WebViewClient 就可以了,剩下的跟自己的A转载 2021-04-26 22:30:01 · 4938 阅读 · 0 评论