![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android开发
文章平均质量分 92
PalmerYang
业精于勤,荒于嬉;行成于思,毁于随.
展开
-
Android项目Gadle统一依赖管理
直接编写是Android项目工程自带的默认管理方式,在每一个module中都写死了不同依赖及版本号,因此每次升级依赖库时都需要对每一个module做大量的手动更改。Google在Android官方文档中推荐通过使用gradle的extra属性,将依赖及版本号编写到config.gradle配置文件中,每个module都去依赖config.gradle中的版本,从而达到统一管理的目的。ext {libs = [Gradle文档。原创 2023-01-16 22:00:00 · 2692 阅读 · 1 评论 -
Android存储之MediaStore的使用
上文中提到了Android提供内容的叫ContentProvider,那么在Android中怎么区分各个Provider?有的是提供联系人的,有的是提供图片的,有的是提供视频的等等。所以就需要有一个唯一的标识来标识这个Provider,Uri(通用资源标识符 Universal Resource Identifier)就是起到了这个标识的作用。每一个ContentProvider都会有一个唯一的Uri地址,通过这个Uri标识可以获取到ContentProvider和其中的数据,然后进行数据操作。原创 2022-10-10 23:45:00 · 17587 阅读 · 0 评论 -
Android存储之分区存储适配
在上文中我们了解到,外部存储空间分为私有目录和公共目录,在Android10以前,应用程序通过获取READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限。获得外部存储空间的权限以后直接通过file path读取和修改外部存储空间中任意的文件,当然也包括其他应用的外部私有目录文件,这样一来极易造成泄露用户隐私。而且很多应用会在外部存储根目录建一个自己应用的文件夹,用于存放应用的数据。这样会导致用户卸载后,应用数据不会随之删除。导致手机文件特别混乱,长期占用空间。原创 2022-10-10 23:00:00 · 7370 阅读 · 3 评论 -
Android颜色透明度转换对照表
透明度范围分为 0 - 255,0就是全透明,255就是不透明,用16进制表示为 (透明)00 –> FF(不透明) 例如:50%透明度,50%也就是256的一半,因为是从0开始算的,所以是 127,转换成16进制就是 7F。透明度 和不透明度是两个概念, 它们加起来是1,或者100%。例如需要计算30%透明度,那么它对应的不透明度则是100%-30%=70%,不透明度为70%,根据公式进行计算255*70%=178.5,四舍五入179,然后利用计算器转为16进制为B3。原创 2022-09-13 12:00:55 · 10755 阅读 · 0 评论 -
Android数据库Room之二实体之间的关系
一.定义对象之间的关系由于 SQLite 是关系型数据库,因此您可以定义各个实体之间的关系。尽管大多数对象关系映射库都允许实体对象互相引用,但 Room 明确禁止这样做。如需了解此决策背后的技术原因,请参阅了解 Room 为何不允许对象引用。Room 的数据实体类跟数据库表是对应的,所以,有些表关系可以直接通过定义数据实体类之间的关系来实现,这样就可以无需编写 SQL 语句实现插入和查询过操作。🐼两种可能的方法在 Room 中,您可以通过两种方式定义和查询实体之间的关系:使用具有嵌入式对象的中间数据类原创 2022-05-25 09:26:25 · 1902 阅读 · 1 评论 -
Android数据库Room之一基础使用
一.Room简介Room是Google推出的数据库框架,是一个 ORM (Object Relational Mapping)对象关系映射数据库、其底层还是对SQLite的封装。 使用ORM可以让开发者更加关注业务逻辑,而不是SQL 语句。在JavaWeb领域也有类似的ORM 数据库框架Hibernate、MyBatis等等。1.Android平台数据库框架在 Android 中常见的数据库框架:Greendao Realm DBFlowLitePalJetpack-Room原创 2022-05-25 09:24:46 · 6190 阅读 · 2 评论 -
Jetpack-Compose之四 页面跳转(导航)
导航实际上就是页面跳转,因为Compose中每一个@Composable注解标注的方法就可以成为一个视图,所以导航就是用来处理这些视图之间的跳转操作。 Navigation在设计上高度抽象,只负责导航逻辑不关心页面的具体实现,无论是Activity、Fragment甚至是一个已定义View都可以基于Navigation实现导航。当然,Composable也是可以的。原创 2022-01-17 17:29:06 · 13383 阅读 · 5 评论 -
Jetpack-Compose之三附带效应(副作用)
纯函数指的是函数与外界交换数据只能通过函数参数和函数返回值来进行;函数从函数外部接受的所有输入信息都通过参数传递到该函数内部;函数输出到函数外部的所有信息都通过返回值传递到该函数外部。纯函数的运行是不会对外界的环境产生任何的影响,给一个纯函数同样的参数,那么这个函数永远返回同样的值,调用一个纯函数,不会导致任何状态的变化,也就不会影响后来的该函数调用。原创 2022-01-13 17:33:56 · 2128 阅读 · 2 评论 -
Jetpack-Compose之二 状态管理
状态是什么?状态指的是Ui的形态,例如按钮控件的文字、颜色的状态等等,在软件编程中我们会用一个状态值去保存该状态。传统的Android视图层次结构中,界面是通过一个个的View, 例如:ImageView、TextView等搭建而成,然后通过findViewById找到对应的View的引用后,设置它的内部状态值,例如设置TextView的文本,当UI的状态值改变时,基于XML的UI框架会自动刷新UI来显示正确的状态。Compose 是声明式的 UI,在组合函数中这些状态值描述了这个UI组件的状态,所以想更改原创 2022-01-07 15:29:03 · 3582 阅读 · 2 评论 -
Jetpack-Compose之一基础使用
如果之前有了解或者使用果Flutter,应该会对命令式UI这种架构不陌生。目前申明式UI确实是很火包含Flutter,SwiftUI,JetpackCompose都使用了该种方式。2021年7月底,Google 正式发布了 Jetpack Compose 的 1.0 稳定版本,这说明Google认为Compose已经可以用于生产环境了。原创 2021-12-30 17:21:50 · 2125 阅读 · 0 评论 -
Flutter与Android混编
各端分离方案是iOS、Android和Flutter分别作为三个独立项目存在,将Flutter工程的编译产物作为iOS工程和Android工程的依赖模块,原有工程的管理模式不变,对原生工程没有侵入性,无需额外配置工作。 这种方案需要单独创建Flutter项目,然后通过iOS(CocoaPods)和安卓的依赖管理工具将Flutter项目build出来的framework、资源包等放入Native工程以供使用。 这种方式可以将iOS、Android和Flutter项目放在一个目录下面作为一个项目来管理,也可以不原创 2021-12-22 18:29:31 · 2803 阅读 · 0 评论 -
Android依赖注入框架Hilt的使用
Hilt 是Google 最新的依赖注入框架,其基于Dagger研发。Hilt可以说是专门为Android 打造,提供了一种将Dagger依赖项注入到Android应用程序的标准方法,而且创建了一些标准的组件和作用域,这些组件会自动集成到Android应用程序的各个生命周期中,以简化开发者的上手难度。原创 2021-12-21 18:50:35 · 1672 阅读 · 0 评论 -
android使用java的反射机制跳转Activity
使用java的反射机制可以达到所要的效果 try { Class clz = Class.forName("com.testdemo.MainActivity"); startActivity(new Intent(JsonAct.this, clz)); } catch (ClassNo原创 2017-05-25 17:33:31 · 4457 阅读 · 0 评论 -
Android弹窗总结
一.全局弹窗方式一:通过申请特殊权限来弹出全局弹窗1.先在清单文件里面进行配置权限(兼容低版本): <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.SYST...原创 2016-09-12 14:27:59 · 648 阅读 · 0 评论 -
Android动画总结
一.帧动画.1.在drawable文件夹下面创建动画文件.<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="...原创 2016-09-12 14:28:47 · 555 阅读 · 0 评论 -
Android中WebView截长图
android 在webView里面截图大概有四种方式.1.获取到DecorView然后将DecorView转换成bitmap然后写入到文件里面.View view = getWindow().getDecorView(); Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.C原创 2017-07-21 16:05:40 · 3577 阅读 · 2 评论 -
滚动列表控件Recyclerview总结
一.普通的recyclerview创建.在build.gradle里面添加依赖库支持. compile 'com.android.support:design:24.2.1'布局文件里面写上控件.<android.support.v7.widget.RecyclerViewandroid:id="@+id/my_recycler_view"android:layout_...原创 2016-09-12 14:29:06 · 363 阅读 · 0 评论 -
Android Studio调试技巧及快捷键大全
Android studio版本下载gradle 版本下载一.降低gradle的编译时间.1.方式一.打开AS安装所在的bin目录位置,用记事本打开studio64.exe.vmoptions文件后修改里面的值(修改Androidstudio编译时期的堆内存) 打开help里面对vm进行编辑:-Xms2048m-Xmx2048m-XX:MaxPermSize=2048m-XX:ReservedCodeCacheSize=1024m-XX:+UseConcMarkSweepG原创 2016-09-12 14:27:45 · 620 阅读 · 0 评论 -
Android官方解决65k问题方法
算法 (Algorithm),是对特定问题求解步骤的一种描述。解决一个问题往往有不止一种方法,算法也是如此。那么解决特定问题的多个算法之间如何衡量它们的优劣呢?好的程序设计无外乎两点,“快"和"省”。"快"指程序执行速度快,高效,"省"指占用更小的内存空间。这两点其实就对应**“时间复杂度"和"空间复杂度”**。通过这两点就能衡量多个算法之间的优劣。原创 2016-09-12 14:28:31 · 479 阅读 · 0 评论 -
Android中WebView选择本地图片上传
引言在我们使用webView的时免不了要和原生的交互,其中就会遇到WebView上传文件的逻辑:当我们在Web页面上点击选择文件的控件()时,会回调WebChromeClient下的openFileChooser()(5.0及以上系统回调onShowFileChooser())。这个时候我们在openFileChooser方法中通过Intent打开系统相册或者支持该Intent的第三方应用来选择图片。解决方式.1.首先我们要自定义一个WebChromeClient继承WebChromeClien原创 2016-09-12 14:29:58 · 413 阅读 · 0 评论 -
Android Notification 通知栏
在android中我们可以使用到通知界面来展示我们通知给用户.我们点击通知,也可以实现跳转到我们指定的界面.当然也可以使用通知栏让我们的服务变成前台服务从而实现提高服务的优先级.一.创建通知发送通知需要通过NotificationManager.notify()来实现,该函数的一个必要参数是 Notification 对象,Notification 对象描述了通知的具体内容,构建该...原创 2016-09-12 14:28:14 · 904 阅读 · 0 评论 -
Android APK反编译及逆向工程
可以利用ApkTool,获取AndroidManifest和res等资源文件:功能:拆解Apk文件,反编译其中的资源文件,将它们反编译为可阅读的AndroidManifest.xml文件和res文件。因为直接把Apk文件当做zip解压,得到的xml资源文件,都是无法直接用文本编辑器打开阅读的,因为它们在打包时经过了build-tools的处理变成了二进制的XML。原创 2017-08-21 15:54:56 · 1162 阅读 · 0 评论 -
Apk构建总结之一打包流程及安装流程
一. 分析已经打好的apk要了解APK的打包流程,我们首先来了解下打包完成以后APK包里面包含哪些东西。.apk文件其实就是一个压缩文件,把文件的后缀改成.zip就可以用解压软件解压了:1. 将apk后缀改成rar包2. 解压rar包apk是一个压缩包,里面有lib,META-INF,classes.dex,res,resources.arsc文件夹和文件。下面看看它们各自的作用。assets资源。lib不是每个apk都有的,主要看项目,文件夹里面存放的是so动态链接库,so动态链接库不原创 2019-10-22 10:05:36 · 982 阅读 · 0 评论 -
Android 穿山甲广告联盟接入
一、SDK接入参考官方接入文档,基于穿山甲版本号: 3.1.0.0导入 aar 及 SDK 依赖的 jar 包将本 SDK 压缩包内的 open_ad_sdk.aar 复制到 Application Module/libs 文件夹(没有的话须手动创建), 并将以下代码添加到您 app 的repositories { flatDir { dirs 'libs' }}depedencies { compile(name: 'open_ad_sdk', ext:原创 2020-06-09 11:29:44 · 25074 阅读 · 4 评论 -
Android组件化架构解析总结
前面说到,组件化的核心就是解耦,所以组件和组件之间是不能有依赖的,例如在首页模块点击购物车按钮需要跳转到购物车模块的购物车页面,两个模块之间没有依赖,所以不能在使用Activity的显示跳转来跳转页面了 ,虽然隐式启动是可以实现跳转的,但是隐式 Intent 需要通过 AndroidManifest 配置和管理,协作开发显得比较麻烦。建议创建一个lib_core的公共功能模块组件,将常用的与业务无关的功能封装到此模块中,例如图片加载功能,网络请求功能,日志管理功能等,这些功能可以被所有的app通用。原创 2021-07-07 15:36:24 · 1549 阅读 · 0 评论 -
使用Aop技术提升Android开发效率
AOP 和 OOP的区别:面向对象的特点是继承、多态和封装。为了符合单一职责的原则,OOP将功能分散到不同的对象中去。让不同的类设计不同的方法,这样代码就分散到一个个的类中。可以降低代码的复杂程度,提高类的复用性。但是OOP在分散代码的同时,也增加了代码的重复性。例如,我们在两个类中,可能都需要在每个方法中做日志。按照OOP的设计方法,我们就必须在两个类的方法中都加入记录日志的内容。也许他们是完全相同的,但是因为OOP的设计让类与类之间无法联系,而不能将这些重复的代码统一起来。然而AOP就是为了解决这类原创 2020-05-16 17:11:20 · 166 阅读 · 0 评论 -
Apk构建总结之二构建工具(Ant、Maven、Gradle)
一. 构建工具1.什么是构建工具?在进行编程操作的时候,我们经常会遇到很多与编程无关的项目管理工作。如下载依赖、编译源码、单元测试、项目部署等操作。一般的,小型项目我们可以手动实现这些操作,然而大型项目这些工作则相对复杂。所以我们需要用到构建工具。构建工具是帮助我们实现一系列项目管理、测试和部署操作的工具。构建工具可以把源代码生成可执行应用程序的过程自动化的程序(例如Android app生成apk)。构建工具包括编译、连接跟把代码打包成可用的或可执行的形式。总的来说构建的自动化是编写或使一大部原创 2019-11-13 13:54:20 · 687 阅读 · 0 评论 -
Android知识梳理之自定义ViewGroup
在我们进行android开发的时候虽然官方提供了形形色色的控件,但是有的时候根据不同业务需求我们找不到官方的控件支持,那么这个时候就需要我们自己去定义控件来适应不同的需求了。众所周知Android自定义为一般分为三类:自定义ViewGroup,自绘View,组合View。本篇将和大家一起探讨自定义ViewGrop 的相关知识.转载请注明出处:http://blog.csd...原创 2016-04-27 14:12:16 · 2643 阅读 · 0 评论 -
Android知识梳理之Sqlite数据库的使用和优化
PS.不知不觉间发现自己已经做了很久很久的Android开发了,过去对知识块的梳理总是放在云笔记里面.主要的原因还是自己的笔记太杂乱,没有脉络.本着开源的精神,也趁着这段时间有空将之前云笔记里面的文章梳理下.同时将一些知识点整理出来和大家共同分享.转载请注明出处:http://blog.csdn.net/unreliable_narrator ...原创 2016-04-18 15:20:35 · 1525 阅读 · 0 评论 -
Activity进阶知识整理
activity可以算是android中比较重要的组件了.虽然用了快两年的时候,但是却没有对activity做一个系统的知识梳理.特发此篇博客用于对activity的知识的梳理.转载请标明出处:https://blog.csdn.net/unreliable_narrator一 .Activity相关: 1.onstart()和onstop()是从activit...原创 2015-10-27 19:05:51 · 653 阅读 · 0 评论 -
Android知识梳理之事件传递机制
一·Activity的构成一个Activity包含了一个Window对象,这个对象是由PhoneWindow来实现的。PhoneWindow将DecorView作为整个应用窗口的根View,而这个DecorView又将屏幕划分为两个区域:一个是TitleView,另一个是ContentView,而我们平时所写的就是展示在ContentView中的,下图表示Activity的构成。二·...原创 2016-04-20 13:44:38 · 440 阅读 · 0 评论 -
Android知识梳理之BroadcastReceiver整理
PS.不知不觉间发现自己已经做了很久很久的Android开发了,过去对知识块的梳理总是放在云笔记里面.主要的原因还是自己的笔记太杂乱,没有脉络.本着开源的精神,也趁着这段时间有空将之前云笔记里面的文章梳理下.同时将一些知识点整理出来和大家共同分享.转载请注明出处:http://blog.csdn.net/unreliable_narrator?viewmode=contents ...原创 2016-04-15 17:24:03 · 3586 阅读 · 0 评论 -
Android知识梳理之ContentProvider内容提供者的使用
在实际的开发中我们可能会遇到这样的情况:将自己app的数据文件提供给别的app.类似系统自带的联系人,短信箱.但是我们知道Android系统中每一个进程都是独立的,而且他们的数据都是属于私有数据,别的进程是无法获取到的.当然我们可以通过将文件或者是数据库存到sd卡或者手机内存里面来实现文件的共享.But,如果采用文件操作模式对外共享数据,数据的访问方式会因数据存储的方式而不同,导致数据的访问方式无原创 2016-04-19 16:09:39 · 564 阅读 · 0 评论 -
Android知识梳理之自定义View
虽然android本身给我们提供了形形色色的控件,基本能够满足日常开发的需求,但是面对日益同质化的app界面,和不同的业务需求。我们可能就需要自定义一些View来获得比较好的效果,自定义View是android开发者走向高级开发工程师必须要走的一关。自定义View主要包含三块自定义Viewgroup,自绘View,组合View。本文我们主要讲自绘View。 ...原创 2016-04-28 15:29:28 · 6806 阅读 · 0 评论 -
在android中使用rxjava
添加依赖: compile 'io.reactivex:rxandroid:1.2.1' compile 'io.reactivex:rxjava:1.1.6'一.相关概念observable:被观察者observer:观察者subcribe订阅实现方式:Observable和Observer通过subscribe()方法实现订阅关系,从而...原创 2015-11-06 11:43:46 · 1492 阅读 · 0 评论 -
Android Studio上面使用Ndk JNI 开发工程
由于网上很多的资源都是照搬别人的东西,很多内容都没有进行实践,因此有很多的坑.写本文的目的也是想通过亲身的实践来进行验证.实践才是检验真理的唯一标准.原创 2016-04-12 11:21:00 · 9511 阅读 · 2 评论 -
Android知识梳理之屏幕适配全攻略
引言: 我相信Android碎片化问题是让所有的Android开发者都比较头疼的问题.尤其是屏幕适配这一块儿.想要自己的app在不同的设备上面都有一个比较好的显示效果.就必须做好相应的屏幕适配.本文是结合网上的相关知识总结、官方文档结合自己的一些理解来进行阐述的.如有不恰当的地方,欢迎斧正.共同学习. 转载请标明出处:http://blog.csdn.net/unrel...原创 2016-05-04 16:34:08 · 5654 阅读 · 0 评论 -
android应用程序启动时短暂白屏或者黑屏的解决处理方案
最近在研究使用app的过程中发现有的app首次启动的时候会有短暂的白屏,而有些app则不会出现这样的情况.起初我以为是手机的问题.但是当我换了几个手机进行测试的时候仍然会出现这样的状况.当然出现白屏这样的效果肯定是不会给用户行云流水般的感觉了,接下来我们就来着手解决这样的问题. 转载请标明出处:http://blog.csdn.net/unreliable_narrator?vi原创 2016-04-12 16:30:30 · 12969 阅读 · 4 评论 -
在Android studio里面使用AIDL
首先我们要明白aidl的作用是什么?比如说我们提供了一个服务,当别的程序(可以看成是一个其他的进程)要来使用我们提供的服务的时候,这个时候就需要用到aidl来进行通信.至于实现的原理度娘里面有大量的文章可以参考,并不是本文重点,所以不做赘述.做赘述.首先我们先来看看实现的效果.如下图所示.我们提供了一个加法计算的服务,在客户端使用aidl连接好服务端,然后传递参数给远程服务,就可以拿到计算原创 2016-04-08 14:31:41 · 5747 阅读 · 0 评论 -
Android内存泄漏
一.内存泄漏。1.什么是android内存泄露? 内存泄露是指一个无用对象持续占有内存或无用对象的内存得不到及时的释放,从而造成的内存控件的浪费称为内存泄露。也就是说一个你不需要的对象竟然还占着内存,还不释放,GC也不顶用。2.内存泄露会导致什么后果? 内存泄露最终就将会导致内存溢出。App崩溃。二.Android中常见的内存泄漏.1.单例导致内存泄露。单例的静...原创 2015-08-15 09:42:52 · 1083 阅读 · 0 评论