Android
文章平均质量分 78
android pb java
Cupster
深山磨柴斧,一鸣震江湖。
展开
-
Android Theme主题属性资源定义说明及示例
app设置的theme,本质上是一种资源,一般在/res/values/themes.xml中定义;themes标签定义的主题属性资源是应用级别的,作用在application、activity中;与theme标签类似的 style标签,作用范围低一级,不能作用在application、activity.原创 2022-11-08 17:06:36 · 3211 阅读 · 1 评论 -
RecyclerView源码浅析
大致了解RecyclerView的绘制流程。后期扩充RecyclerVIew的复用机制、动画、滚动处理。原创 2022-10-24 16:25:20 · 937 阅读 · 0 评论 -
Mac brew配置java11&java8共存详解
超细节的完整配置好Java11 和Java8 了,可以随时切换使用。原创 2022-09-18 21:35:11 · 5130 阅读 · 1 评论 -
一文搞定Android库打包成aar/jar发布至Maven Central
一个Android库发布到maven central的流程完整原创 2022-09-16 18:02:07 · 4294 阅读 · 0 评论 -
Android逆向入门、进阶、工具大全
AndroidKiller、Smail、Android-Crack-Tool For Mac、Jeb原创 2022-07-31 22:47:58 · 4100 阅读 · 0 评论 -
AS巧用IDEA注释,提高协作/开发效率
约定一套规范的注释,有利于组员之间的协作开发,也方便与服务端对接。充足的注释能够组员间、前后端协作效率。减少不必要的方法重复实现。规范的类结构注释还能提升代码可读性。原创 2022-07-20 12:47:37 · 621 阅读 · 0 评论 -
Kotlin高阶函数&DSL布局劝退指南
高阶函数是一种特殊的函数它的参数或者返回值是另一个函数。1.使用DSL代码动态布局,解决了普通代码可读性差的问题,可读性与xml基本持平2.页面布局有变动,维护难度降低,利于扩展3.编写代码量较小,界面绘制效率大大优于xml。......原创 2022-07-20 12:41:34 · 922 阅读 · 0 评论 -
动画能手MotionLayout布局的使用
引入注意是beta版,谨慎商用implementation 'com.android.support.constraint:constraint-layout:2.0.0-beta2'使用MotionLayout 是 ConstraintLayout 的子类,拥有其所有功能布局:<android.support.constraint.motion.MotionLayout xmlns:android="http://schemas.android.com/apk/res/andr原创 2021-06-06 23:50:20 · 1116 阅读 · 0 评论 -
Android4.4-Android12各版本更新内容&适配要点
本文内容仅针对Google官方发布原生Android系统,不一定完全适用国内各大厂商定制化的系统。例如:国内某一线手机品牌,移除强制分区储存要求。1.Android-12待Google 发布正式版2.Android-111.强制 【分区存储机制】,按需适配a.项目代码目标version对应Android11,则会被强制执行【分区存储机制】 b.访问媒体文件 、其他文件方式变更,需适配c.分享文件,严格使用provider权限申请:增加单次授权规则 ,按需适配获取电话号码权限原创 2021-06-06 23:41:50 · 2550 阅读 · 3 评论 -
Kotlin Coroutine(二):作用域及取消
一、协程作用域定义协程必须指定其 CoroutineScope 。CoroutineScope 可以对协程进行追踪,即使协程被挂起也是如此。同调度程序 (Dispatcher) 不同,CoroutineScope 并不运行协程,它只是确保您不会失去对协程的追踪。为了确保所有的协程都会被追踪,Kotlin 不允许在没有使用 CoroutineScope 的情况下启动新的协程。CoroutineScope 可被看作是一个具有超能力的 ExecutorService 的轻量级版本。CoroutineScope原创 2021-05-30 23:58:52 · 2646 阅读 · 3 评论 -
Kotlin Coroutine(一):基础及深入
一、接入 //Kotlin implementation "org.jetbrains.kotlin:kotlin-stdlib:1.4.32" //核心库 implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.3" //Android支持库 implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3原创 2021-05-30 23:57:48 · 558 阅读 · 0 评论 -
Flutter for Mac环境配置
本文基于读者有Android开发环境知识储备1.Begin直达【Github】Flutter SDK for Windows&Mac&Linux(须FQ)2.Flutter环境搭建2.1.环境变量由于一些flutter命令需要联网获取数据,国内无法直接访问,Flutter官方为中国开发者搭建了临时镜像,需配置如下环境变量.bash_profile (或.zshrc文件,根据命令使用的是哪个决定)# Flutter config for china develperexpor原创 2021-04-25 14:27:03 · 410 阅读 · 1 评论 -
AutoJS一文精通AutoJS脚本教程详解
本文基于读者熟悉或了解JavaScript1.基础屏幕坐标系,屏幕左上角为原点(0,0),向右为x轴正向,向下为y轴正向单位为px其他大部语法与JS相似或一致2.常用api函数功能click(x,y)click(500,500) 点击屏幕x=500px,y=500px的点press(x,y,mills)press(200,200,1000) 按住(200,200)1秒钟sleep(mills)sleep(1000) 程序暂停1秒press(x,y原创 2021-04-16 11:11:21 · 26267 阅读 · 7 评论 -
Java过渡Kotlin09:对象表达式&对象声明
object关键字Kotlin 使用 object 关键字来声明一个对象单例object DataProviderManager { fun registerDataProvider(provider: DataProvider) { // …… } val allDataProviders: Collection<DataProvider> get() = // ……}实例object Site { var url原创 2021-04-14 17:38:45 · 387 阅读 · 0 评论 -
Java过渡Kotlin08:泛型和枚举
Kotlin泛型1.类声明class Box<T>(t: T) { var value = t}创建val box: Box<Int> = Box<Int>(1)// 或者val box = Box(1) // 编译器会进行类型推断,1 类型 Int,所以编译器知道我们说的是 Box<Int>。exampleclass Box<T>(t : T) { var value = t}fun main(arg原创 2021-04-14 17:37:42 · 538 阅读 · 0 评论 -
Java过渡Kotlin07:数据类&密封类
#数据类Kotlin 可以创建一个只包含数据的类,关键字为 data:data class User(val name: String, val age: Int)如果这些函数在类中已经被明确定义了,或者从超类中继承而来,就不再会生成。为了保证生成代码的一致性以及有意义,数据类需要满足以下条件:主构造函数至少包含一个参数。所有的主构造函数的参数必须标识为val 或者 var ;数据类不可以声明为 abstract, open, sealed 或者 inner;数据类不能继承其他类 (原创 2021-04-14 17:36:50 · 649 阅读 · 0 评论 -
Java过渡Kotlin05:继承和接口
1. 继承kotlin中所有类继承Any默认提供:equals()hashCode()toString()注意:Any 不是 java.lang.Object。kotlin类默认不能被继承,如果一个类要被继承,可以使用open关键字进行修饰。open class BaseActivity(p:Int) //定义积累class MainActivity(String[] args ,p:Int) : BaseActivity(p)2.构造函数如果子类有主构造函数, 则基类必须在原创 2021-04-14 17:32:37 · 866 阅读 · 0 评论 -
Java过渡Kotlin04:类和对象
1.定义Kotlin 中使用关键字 class 声明类,后面紧跟类名:class Runoob { // 类名为 Runoob // 大括号内是类体构成}空类class Empty成员函数class Runoob() {fun foo() { print(“Foo”) } // 成员函数}2.类的属性var 声明 可变变量val 声明 常量、不可变、尽可赋值一次class Runoob { var name: String = …… var url:原创 2021-04-14 17:30:46 · 1047 阅读 · 0 评论 -
Java过渡Kotlin03:流程控制
title: Kotlin03:流程控制date: 2020-03-01 20:00:01categories:Kotlintags:Kotlin1.IF表达式// 传统用法var max = a if (a < b) max = b// 使用 else var max: Intif (a > b) { max = a} else { max = b} // 作为表达式val max = if (a > b) a else b.原创 2021-04-14 17:29:44 · 1013 阅读 · 0 评论 -
Java过渡Kotlin02:数据类型
一、基本数据类型与Java基本一致不同的是,字符不属于数值类型,是一个独立的数据类型类型位宽度Double64Float32Long64Int32Short16Byte8二、字面常量未提及的均与Java一致长整形Long,以大写L结尾: 123456789LFloat使用F / f 结尾:123.50f 123.50F2进制以0b开头: 0b00001011不支持8进制可以使用下划线增加数字的可读性val oneM原创 2021-04-14 17:26:59 · 1708 阅读 · 0 评论 -
Java过渡Kotlin01:基础语法
title: Kotlin01:基础语法date: 2020-03-01 12:00:01categories:Kotlintags:Kotlin一、基础语法句末 不需要分号;1.包声明与Java一致2.导包与Java一致3.有多个包默认会导入kotlin.*kotlin.annotation.*kotlin.collections.*kotlin.comparisons.*kotlin.io.*kotlin.ranges.*kotlin.sequences.原创 2021-04-14 17:25:32 · 1159 阅读 · 0 评论 -
Java过渡Kotlin06:扩展
1.是什么Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。上代码:class User(var name:String)/**扩展函数**/fun User.Print(){ print("用户名 $name")}fun main(arg:Array<String>){ var user = User("Runoob") user.Print()}原创 2021-04-14 17:33:49 · 1092 阅读 · 0 评论 -
【5年Android从零复盘系列之三十五】Acticity详解-基础&进阶
【5年Android从零复盘系列之三十五】Acticity进阶详解【代码是最好得老师】1.概要Activity 是四大组件之首2.Activity生命周期典型情况下的生命周期:是指在有用户参与的情况下,Activity所经过的生命周期的改变;异常情况下的生命周期:是指Activity 被系统回收 或者由于当前设备的 Configuration发生改变 从而导致Activity被销毁重建2.1典型生命周期当用户按back键回退时,回调如下:onPause -> onSt原创 2021-04-10 16:44:55 · 1668 阅读 · 0 评论 -
ConstraintLayout约束布局
代码是最好的老师一、概述ConstraintLayout是Support库一个ViewGroup.可以理解为对RelativeLayout的升级,效率更高且更实用。其直接继承自 ViewGroupConstraintLayout可以实现RelativeLayout的所有功能但是不建议作为列表item根布局但是不建议作为列表item根布局但是不建议作为列表item根布局二、布局定位2.1-相对定位属性功能layout_constraintLeft_toLef原创 2021-04-07 17:14:05 · 2088 阅读 · 0 评论 -
【5年Android从零复盘系列之三十四】Android存储(9):腾讯MMKV 高性能键值存储组件详解
【5年Android从零复盘系列之三十四】Android存储(9):腾讯MMKV 高性能键值存储组件详解【代码是最好得老师】1.概要Github官方文档Demo.zipMMKV 是基于 mmap 内存映射的 key-value 组件性能高,稳定性强(底层序列化/反序列化使用 protobuf 实现)支持加密支持多进程共享支持匿名内存,内存悬浮不落地文件,安全性极高效率极高支持SharedPreferences直接迁移支持类型:boolean、int、long、float、dou原创 2021-03-18 18:07:35 · 7915 阅读 · 0 评论 -
【5年Android从零复盘系列之三十三】Android存储(8):DBFlow使用详解
【5年Android从零复盘系列之三十三】Android存储(8):DBFlow使用详解【代码是最好的老师】1.概述GitHub直达DBFlowDBFlow是一个注解化(AnnotationProcessing)的ORM框架:同Springboot一样的编码思维,让开发更专注于逻辑而不是死板的db代码支持同步/异步/事务操作支持自定义数据库储放路径使用灵活、简洁,可读性高编译期代码生成,运行时对性能是零损耗的,不逊于其他数据库框架支持懒加载【大招】可以直接注解化生成content原创 2021-03-09 18:01:23 · 1200 阅读 · 0 评论 -
【5年Android从零复盘系列之三十二】Android存储(7):LitePal使用详解
【5年Android从零复盘系列之三十二】Android存储(7):LitePal数据库框架【代码是最好的老师】1.概述LitePal是郭霖大神开源的一款数据库框架。LitePal同greendao一样,有共同的优点。区别在,不同数据量、不同操作情形下,性能和资源占用各有些许差别。不过在2020+年代了,这些细微差别已经几乎是无感。具体商用中,追求稳定,会更多地选择greendao。其缘由并不是LitePal弱势,而是greendao的有较大的使用基数,使其趋于完美。而LitePal后起之秀,原创 2021-03-02 17:50:03 · 3839 阅读 · 0 评论 -
【5年Android从零复盘系列之三十一】Android存储(6):GreenDao使用全解
【5年Android从零复盘系列之三十一】Android存储(6):GreenDao【代码是最好的老师】1.概述GreenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 框架greendao具有以下优点,是项目架构期db方案的首选:存取速度快支持加密轻量、api极简支持缓存中间代码自动生成,代码编写量小【重点】开源至今,经历千锤百炼,稳定可靠GitHub直达 GreenDao2.使用总体分为三步:配置导包编写实体类(设计表)编写CRUD原创 2021-03-01 17:14:22 · 4263 阅读 · 1 评论 -
【5年Android从零复盘系列之三十】Android存储(5):数据库sqlite简介及框架选择分析
【5年Android从零复盘系列之三十】Android存储(5):数据库sqlite database【代码是最好的老师】1.概述SQLite 是Android平台轻量级的关系型数据库;效率高、资源占用小原生操作SQLite需要借助SQLiteOpenHelper帮助类,实际开发一般使用数据库框架商用的成熟框架有greendao3+、litepal、DBFlow以及另辟蹊径的Realm2.greendaoGreenDao使用全解greendao具有以下优点,是搭建项目框架时的首选:原创 2021-02-22 10:46:45 · 6163 阅读 · 2 评论 -
【5年Android从零复盘系列之二十九】Android存储(4):res/raw文件详解
【5年Android从零复盘系列之二十九】Android存储(4):res/raw文件【代码是最好的老师】1.概述res/raw目录下的文件不会被压缩,会以原始文件打包进apk文件文件资源可以在代码中直接引用,如R.raw.ic_halo或xml中@raw/xxapp内置音效、短提示音等建议放此处res/raw不支持多级目录,如果需要自由度,推荐使用assets方式2.使用读取文件内容:读取图片文件2.1 读取文件内容 private void readbtnReadR原创 2021-02-20 17:00:00 · 3404 阅读 · 0 评论 -
【5年Android从零复盘系列之二十八】Android存储(3):assets文件详解
【5年Android从零复盘系列之二十八】Android存储(3):assets文件【代码是最好的老师】1.概述assets目录用于存储app的原始文件assets目录下所有文件不会被编译,会被原样打包进APK使用特定工具类AssetManager读取Assets目录下文件通常存放1-文本;2-不压缩图像;3-h5混合开发相关文件;4-音视频文件不同于res/raw,assets下文件不能使用R.xx.id引用方法功能list(String path)获取path原创 2021-02-20 15:38:17 · 4846 阅读 · 0 评论 -
【5年Android从零复盘系列之二十七】Android存储(2):文件&Properties详解
【5年Android从零复盘系列之二十七】Android存储(2):文件【代码是最好的老师】1.概述Android中文件操作与Java一致,File类是java中的文件操作工具类,Android其他文件操作API也是基于file操作进行的封装。文件操作有:FilePropertiesassets原始文件raw原始文件2.File存储与读取文件有关的操作,一般需要配置app权限,代码中需设置动态申请权限。 <uses-permission android:name="a原创 2021-02-19 17:52:55 · 4013 阅读 · 0 评论 -
【5年Android从零复盘系列之二十六】Android存储(1):Sharedpreference详解
【5年Android从零复盘系列之二十六】Android存储(1):Sharedpreference1.概述(注意要点)SharedPreferences是一个轻量级的存储工具类,实际开发中主要用于保存APP基础设置值。SharedPreference是以键值对key-value形式存储数据支持直接存储的基础类型有:String 、boolean 、int 、long、float保存位置:/data/data/app_package_name/shared_prefs/your_sp_name原创 2021-02-06 18:01:21 · 6899 阅读 · 0 评论 -
【5年Android从零复盘系列之二十五】Android自定义对话框(2)实践:版本更新Dialog
【5年Android从零复盘系列之二十五】Android自定义对话框(2)实践:版本更新Dialog1.简述如何自定义DialogFragment,请参考Android自定义弹窗:DialogFragmentDialogFragment是谷歌官方推荐的对话框,可以高度自定义,灵活方便,非常适合编写产品经理设计的任何UI。2.需求设计自定义检查版本更新对话框,并加入动画效果,如下图:3.开发3.1 布局res/layout/xxx.xml<?xml version="1.0" e原创 2021-02-06 17:02:58 · 614 阅读 · 0 评论 -
【5年Android从零复盘系列之二十四】Android自定义对话框(1):DialogFragment图文详解
【5年Android从零复盘系列之二十四】Android自定义对话框DialogFragment1.简述DialogFragment 是谷歌官方推荐的对话框,可以高度自定义,灵活方便,非常适合编写产品经理设计的任何UI。AlertDialog在商业项目实际开发使用率已经低到忽略不计,了解基本使用即可。2.创建方式的区别1.onCreateDialog该方式是在方法内部创建AlertDialog然后返回AlertDialog对象,定制性差,不推荐。2.onCreateView–推荐方式在on原创 2021-02-05 12:04:37 · 7358 阅读 · 0 评论 -
【5年Android从零复盘系列之二十三】Android动画(3):插值器与估值器详解
【5年Android从零复盘系列之二十三】Android动画(3):插值器与估值器1.简述Android有三种动画,分别是视图动画,属性动画,帧动画。其中,帧动画因为资源占用大、性能差、内存溢出等不足,实际开发不推荐使用。2. 插值器 Interpolator类似物理中的加速度,定义动画进度值变化的速度,默认为线性变化。android中定义的插值器:插值器功能AccelerateDecelerateInterpolator先加速,后减速LinearInterpol原创 2021-02-04 14:12:43 · 1035 阅读 · 0 评论 -
【5年Android从零复盘系列之二十二】Android动画(2):属性动画详解
【5年Android从零复盘系列之二十二】Android动画(2):属性动画1.简述Android有三种动画,分别是视图动画,属性动画,帧动画。其中,帧动画因为资源占用大、性能差、内存溢出等不足,已被废弃。属性动画是Android最常用的动画方案,具有以下优势:动画效果包括但不限于平移、旋转、缩放、透明;作用对象包括但不限于View;同等条件下,属性动画性能&资源占用优于视图动画;高可定制化2. 原理ValueAnimator类是通过不断控制 值 的变化,再实时赋给对象,从原创 2021-02-03 17:57:17 · 7449 阅读 · 0 评论 -
【5年Android从零复盘系列之二十一】Android动画(1):视图动画详解(图文)
【5年Android从零复盘系列之二十一】Android动画(1):视图动画1.简述Android有三种动画,分别是视图动画,属性动画,帧动画。其中,帧动画因为资源占用大、性能差、内存溢出等不足,已被废弃。视图动画View Animation的使用场景, 有几点总结要先声明【重点】不改变View的实际位置View animation 不宜用在图片过大的场景View animation 使用资源文件的路径是/res/anim/文件名.xmlView animation 建议使用xml方式,原创 2021-02-01 16:54:04 · 1244 阅读 · 0 评论 -
【5年Android从零复盘系列之二十】Android自定义View(15):Matrix详解(图文)【转载】
【转载】本文转载自麻花儿wt的文章《android matrix 最全方法详解与进阶(完整篇)》【5年Android从零复盘系列之二十】Android自定义View(15):Matrix详解【转载】1.概述Android Matrix ,是一个3*3矩阵,用于Android View中处理图形变换。2.原理2.1 Android Matrix 矩阵图示功能/作用图示其中:MSCALE_X代表x方向的缩放值,MSCALE_Y代表y方向的缩放值;MSKEW_X、MSKEW_Y分别代转载 2021-02-01 14:39:58 · 5415 阅读 · 0 评论 -
【5年Android从零复盘系列之十九】Android自定义View(14):手势处理库android-gesture-detectors详解(图文)
【5年Android从零复盘系列之十九】Android自定义View(14):手势处理库android-gesture-detectors1.简介android-gesture-detectors是作者almeros封装的一个手势处理库,可以直接使用处理两指旋转手势、推压手势、拉伸手势、拖拽手势,以及Android自带的缩放手势。代码量不多,简单,有兴趣可以自行阅读源码,会有不小收获。Github连接https://github.com/Almeros/android-gesture-detec原创 2021-01-28 17:26:05 · 13468 阅读 · 1 评论