
安卓开发技术学习
文章平均质量分 67
邹奇
热爱技术,热爱分享,锻炼身体!坚持开源分享!!!
展开
-
TextView 多行超出指定行数结尾显示省略号 ● 解决方法
上面的方法可以放到一个工具类里,然后方便统一调用。然后基于上面的逻辑可以扩展出更多省略号位置展示的情况,同学们可以自己去尝试一下。下期有缘再见!原创 2023-04-13 10:43:52 · 1523 阅读 · 0 评论 -
Android 高性能列表:RecyclerView + DiffUtil
Android在中,支持库开始支持了DiffUtil工具类的使用DiffUtil内部使用进行两个数据集的对比,找出新数据与旧数据之间最小的变化部分,和一起使用可以实现列表的局部更新所以使用DiffUtil自实现计算得到DiffResult将DiffResult分发给Adapter进行局部更新// DiffResult 再把差异分发给 Adapter,adapter 最后根据接收到的差异数据做更新 diffResult . dispatchUpdatesTo(MyAdapter . this);原创 2023-02-23 14:57:41 · 1516 阅读 · 0 评论 -
Android 中获取某个 dependencies 依赖库的最新版本小技巧
groupId(工程组的标识,通常是一个项目的唯一标识,类似Android项目的包名)artifactId(工程的标识。它通常是工程的名称,groupId和artifactId一起定义了artifact在仓库中的位置)version(工程的版本号。在artifact的仓库中,它用来区分不同的版本)组合起来就是。原创 2023-02-07 09:49:57 · 1217 阅读 · 0 评论 -
Android 中设置指定语言
另外不要在自定义的 Application 类中获取 getResources() ,亲自测试后发现设置指定语言功能并没有生效,后面发现是 getResources 这个方法导致。Android Appication及Activity的 Resource 生成代码分析千万不要在application里面重写getResources技术永不眠!我们下期见!原创 2022-10-26 13:50:15 · 1963 阅读 · 3 评论 -
【Android】杀掉 App 应用程序进程的方法
文章目录背景分析与解决实现背景开发的项目,测试过程中出现了棘手的不明问题。复现操作:当用户频繁进入应用,退出应用,再次进入应用,退出应用,以此循环操作就会出现。分析与解决出现在个别性能较差的机顶盒上,且频繁操作打开退出才会出现,所以基本可以知道是退出时,应用进程还没来得及真正被杀(这中间的过程就不分析了),又打开了应用,导致相关业务逻辑没有执行到,导致应用运行出现异常。故采取:在应用退出时,手动杀掉 App 进程的方法来尝试解决这个问题。后面也确实证实了上面这个方法可以解决问原创 2022-04-26 15:54:20 · 5381 阅读 · 0 评论 -
Android 中获取机顶盒的 mac 地址
文章目录背景思路演示代码实现背景分享实用的功能。思路一般来说,机顶盒的 mac 地址一般可以在文件系统中的两个地方查看,路径是:/sys/class/net/eth0/address/sys/class/net/wlan0/address一般逻辑是先取 etho/address 文件中的 mac,如果获取不到再去取 wlan0/address 文件中的 mac演示机顶盒的 mac 地址信息页,如下图示:可以看到 mac 地址是 04:3c:e8:95:06:24我们通过原创 2022-04-21 11:48:04 · 4832 阅读 · 1 评论 -
Android 中获取网络下载速率的方法
文章目录相关方法如下:// 获取应用程序的 uidpublic static int getAppUid() { int uid = -1; // KmApplication是我的自定义Application,同学们自己根据demo是啥做对应修改即可 PackageManager packageManager = KmApplication.getContext().getPackageManager(); try { ApplicationInfo a原创 2022-04-11 11:44:58 · 4298 阅读 · 0 评论 -
Android 中关于九宫格图片的那些事
文章目录背景拉伸对比定义与原理制作点九图片图片加工说明背景最近看了会书,然后有个知识点还是比较重要的。也对同学们的开发是有帮助的,这里简单的记录下。拉伸对比普通图片和九宫格图片拉伸效果对比如下图示:从上面对比图中可看出,当普通图片拉伸后,背景图会变得模糊(左右两边的边缘线既变宽又变模糊了);但是用的九宫格图片拉伸后却不会。定义与原理为了解决图片过度拉伸后显示模糊的问题,Android 专门设计了点九图片。点九图片的扩展名是 png,文件名后常带有 “.9” 字样。因为把一张图片划分成了原创 2021-07-19 11:26:22 · 1607 阅读 · 0 评论 -
Android中使用代码动态添加子 view
文章目录背景布局文件添加子 View背景因为不能影响其他渠道,所以需要在对应渠道里使用代码动态添加子 view。布局文件简单的写了个 demo 记录下,这里父容器使用 RelativeLayout 。布局文件代码如下:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="htt原创 2021-07-02 11:16:36 · 1414 阅读 · 0 评论 -
Android 中悬浮在 activity 上的透明背景 dialog 实现
文章目录背景背景最近项目中有用到,且手机上很多 app 也会有这个功能,记录一下。原创 2021-05-06 14:23:12 · 1110 阅读 · 4 评论 -
Android Kotlin基础学习 - 委托
文章目录背景内容类委托属性委托定义一个被委托的类标准委托延迟属性 Lazy可观察属性 Observable把属性存储在映射中NOT NULL局部委托属性属性委托要求翻译规则背景学习 记录分享 坚持开源!内容委托模式是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通过关键字 by 实现委托。类委托类的委托即一个类中定义的方法实际是调用另一个类的对象的方法原创 2021-03-26 17:45:52 · 164 阅读 · 0 评论 -
Android Kotlin基础学习 - 对象表达式和对象声明
文章目录背景说明对象表达式对象声明伴生对象对象表达式和对象声明之间的语义差异背景学习 记录分享 坚持开源!说明Kotlin 用对象表达式和对象声明来实现创建一个对某个类做了轻微改动的类的对象,且不需要去声明一个新的子类。对象表达式通过对象表达式,可以让方法的参数使用某个匿名内部类的对象。window.addMouseListener(object : MouseAdapter() { override fun mouseClicked(e: MouseEvent) {原创 2021-03-24 18:35:43 · 276 阅读 · 2 评论 -
Android Kotlin基础学习 - 枚举类
文章目录背景说明枚举初始化使用枚举常量实例背景学习 记录分享 坚持开源!说明枚举类最基本的用法是实现一个类型安全的枚举。枚举常量用逗号分隔,每个枚举常量都是一个对象。enum class Color { RED,WHITE,BLACK,BLUE,PINK}枚举初始化每一个枚举都是枚举类的实例,它们可以被初始化:enum class Color(val rgb: Int) { RED(0xff0000), BLUE(0x0000ff)}枚举支原创 2021-03-23 11:43:25 · 585 阅读 · 0 评论 -
Android Kotlin基础学习 - 泛型
文章目录背景定义泛型函数声明实例泛型约束型变声明处型变星号投射(类型投影)背景学习 记录分享 坚持开源!定义泛型,即 “参数化类型”,将类型参数化,可以用在类,接口,方法上。与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼。声明一个泛型类:class Game<T> (t: T) { var value = t;}创建类的实例,需要指定类型参数: val game: Game<String> = Gam原创 2021-03-22 14:36:08 · 374 阅读 · 0 评论 -
Android Kotlin基础学习 - 数据类与密封类
文章目录背景数据类复制实例数据类以及解构声明标准数据类密封类背景学习 记录分享 坚持开源!数据类Kotlin 可以创建一个只包含数据的类,关键字为 data:// Kotlin 可以创建一个只包含数据的类,关键字为 datadata class DataUser(val name: String, val age: Int) { }编译器会自动的从主构造函数中根据所有声明的属性提取以下函数:equals() / hashCode()toString() 格式如 “Use原创 2021-03-18 11:28:48 · 481 阅读 · 0 评论 -
Android Kotlin基础学习 - 扩展
文章目录背景扩展函数实例扩展函数是静态解析的实例扩展一个空对象扩展属性伴生对象的扩展扩展的作用域扩展声明为成员背景学习 记录分享 坚持开源!Kotlin 可以对一个类的属性和方法进行扩展,且不需要继承或使用 Decorator 模式。扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。扩展函数扩展函数可以在已有类中添加新的方法,不会对原类做修改,扩展函数定义形式:fun receiverType.functionName(params){ body}recei原创 2021-03-17 16:41:33 · 277 阅读 · 0 评论 -
adb 命令拉起 apk 并传递参数及相关注意事项
文章目录背景分析过程解决方案方案 1方案 2背景跑 demo 播测,需要使用 adb 命令拉起播测 demo,并传必要的参数将值带给我。其中有个播放地址的值,传过来时发现值不完整,缺少了一部分。后面发现是存在特殊字符,传参时导致了截断,故不完整。只需要特殊编码或者处理下就好。分析过程获取传参值的代码为:private void testIntentData() { System.out.println("> --- testIntentData ---");原创 2021-03-16 15:35:03 · 5730 阅读 · 0 评论 -
Android Kotlin基础学习 - 接口
文章目录背景接口定义接口实现实例接口中的属性实例函数重写实例背景学习,记录分享,坚持开源!接口定义Kotlin 接口与 Java 8 类似,使用 interface 关键字定义接口,允许方法有默认实现:interface MyInterface { fun call() // 未实现 fun call2A(){ // 已实现 println("> call2A 允许方法有默认实现") }}接口实现一个类可以实现一个或多个接口。/原创 2021-03-16 11:02:21 · 517 阅读 · 0 评论 -
Android Kotlin基础学习 - 继承
文章目录背景构造函数子类有主构造函数子类没有主构造函数重写属性重写背景学习,记录分享,坚持开源!Kotlin 中所有类都继承 Any 类,它是所有类的父类。对于没有父类型声明的类, Any 类就是其默认父类:/** * 隐式继承 Any 类 */class Implicit{}Any 类默认提供了三个函数:/** * Indicates whether some other object is "equal to" this one. Implementations原创 2021-03-15 18:09:43 · 260 阅读 · 0 评论 -
Android Kotlin基础学习 - 类和对象
文章目录背景类定义类的属性属性定义getter 和 setter实例主构造器实例次构造器背景学习,记录分享,坚持开源!类定义Kotlin 类定义可包含:构造函数和初始化代码块、函数、属性、内部类和对象声明。Kotlin 中使用关键字 class 声明类,后面紧跟类名称。如下:class ImxiaoqiXxx{ // 类名为 W3cschool // 大括号内是类体构成}可以在类中定义成员函数。如下:class ImxiaoqiXxx() { fun sing()原创 2021-03-12 18:13:28 · 271 阅读 · 0 评论 -
Android Kotlin基础学习 - 函数
文章目录函数定义可变长参数函数lambda(匿名函数)高阶函数背景学习,分享记录,坚持开源!函数定义函数使用关键字 fun ,参数格式为:[参数: 类型]。示例: /** * 函数定义使用关键字 fun,参数格式为:[参数:类型] */ fun sum(a: Int, b: Int): Int { return a+b; }表达式作为函数体,返回值的类型根据表达式最终结果值类型自动推断。示例: /** * 表达式作为原创 2021-03-10 15:29:29 · 308 阅读 · 0 评论 -
Android Kotlin 基础学习 - 条件语句
文章目录背景内容背景学习 分享记录 坚持开源!内容Kotlin 提供了条件表达式。跟 java 中的写法略有不同,在 Kotlin 中写法如下: number = 88; // 每个条件分支都隐式地返回其最后一行的表达式的结果,因此无需使用 return 关键字 val answer : String = if (number > 88){ "number is more than 88" }else{原创 2021-03-09 15:08:25 · 282 阅读 · 0 评论 -
Android Kotlin 基础学习 - Null 安全 && 可为 Null 性
文章目录背景Null 安全可为 Null 性背景分享记录 坚持开源!Null 安全默认情况下,Kotlin 不能持有 null 值。例如以下代码编译无法通过:var secure : String = null;要使变量持有 null 值,它必须是可为 null 类型。可以在变量类型后面加上 ? 后缀,将变量指定为可为 null,如以下示例所示:var secure : String? = null;指定 String? 类型后,可以为 secure 赋予 String 值或 n原创 2021-03-09 14:33:11 · 478 阅读 · 0 评论 -
Android Kotlin 基础学习 - 类型推断
文章目录背景内容背景学习 kotlin 编程语言的基础知识 …坚持开源!内容Kotlin 编译器会根据变量所赋值的类型来推断出变量的类型声明一个变量如下:var typeInfer = "类型推断";由于值是 String 类型,故变量 typeInfer 也会被编译器推断为 String 类型。请注意,Kotlin 是一种静态类型的语言。这意味着,类型将在编译时解析且从不改变。因为是 String 类型,故无法对其调用任何不属于 String 类的函数,如下图示:因为原创 2021-03-08 15:43:58 · 347 阅读 · 0 评论 -
Android Kotlin 基础学习 - 变量声明
文章目录背景内容背景学习 kotlin 编程语言的基础知识 …坚持开源!内容Kotlin 使用关键字 var 和 val 声明变量。val 用于值从不更改的变量。使用 val 声明的变量无法重新赋值。var 用于值可以更改的变量。var 声明变量示例如下:var number : Int = 10;// var 用于值可以更改的变量val 声明变量示例如下:val language : String = "Kotlin";// val 用于值从不更改的变量图示如下:原创 2021-03-08 11:49:51 · 255 阅读 · 0 评论 -
Android Kotlin 基础学习 - Kotlin了解概览
文章目录背景概览一些优点背景多学点东西,记录下,分享啥的 …坚持开源!概览使用 Kotlin 更快地编写更出色的 Android 应用Kotlin 是一种新型的静态类型编程语言,有超过 60% 的专业 Android 开发者在使用,它有助于提高工作效率、开发者满意度和代码安全性一些优点富有表现力且简洁Kotlin 的现代语言功能让您可以专注于表达自己的想法,少编写样板代码。更安全的代码借助自身类型系统所含的 @Nullable 和 @NonNull,原创 2021-03-08 10:51:52 · 219 阅读 · 0 评论 -
Android 获取系统属性值简单说明
文章目录背景获取方式工具类代码获取对应系统属性的 key设备品牌获取演示背景项目中需要获取机顶盒 stbId 等设备系统属性的值获取方式通过反射使用 android.os.SystemProperties 这个类来读取对应系统的属性值。因为这个类是隐藏的,应用层无法直接使用,所以这里需要通过反射来解决。工具类代码工具类对外提供取值方法,内部取值逻辑通过反射实现,这就是总体的思路。代码如下:package yanhua.tv.yinhe;import java.lang.reflect原创 2021-03-04 11:46:20 · 2042 阅读 · 2 评论 -
插件化相关学习与配置 dx 或 d8 环境变量
文章目录背景什么是插件化dx 和 d8 简述dx 和 d8 环境配置输出 dex 文件命令背景最近在了解插件化相关内容,实践了一下,这里记录下相关内容。实践文章 – 手把手带你实现最简单的插件化框架什么是插件化插件化开发是将整个 app 拆分成多个模块,这些模块包括一个宿主和多个插件,每个模块都是一个 apk,最终打包的时候宿主 apk 和插件 apk 分开打包。用户在使用宿主 apk 的时候可以动态的去下载插件 apk,然后使用该功能而不是去更新整个 app 后才能使用新功能。dx 和原创 2021-02-25 18:12:25 · 1180 阅读 · 0 评论 -
Android 开发中渐变背景的简单使用
文章目录背景实现新建 drawable resource 文件gradient.xml 文件渐变背景实现gradient.xml 的使用angle属性说明背景项目中修改 UI,需要用到渐变背景,这个可以代码简单实现,简单做下记录。实现新建 drawable resource 文件选中 res 目录下的 drawable 目录,右键新建一个 Drawable Resource File。如下图示:默认显示如下:修改 Root element 为 shape,并命名为 gradient。如下原创 2021-02-24 10:17:01 · 833 阅读 · 0 评论 -
Android开发中清理webView缓存实现
文章目录背景环境清除缓存实现缓存清除调用时机背景最近负责了个新项目,跟webView相关。简单点说,在我开发的app中,局方会在拉起我的app的时候带上一些必要参数,当然webView控件需要加载的url地址也在这些参数中。拉起应用且app加载h5页面都是正常的,但是局方为了方便开发测试,需要我们的app能够及时的清除缓存。环境机顶盒设备可能很多同学不知道机顶盒是什么?简单说明一下。既然是能安装 app 的设备,那说明机顶盒是一个 android 系统的设备。到这就好,不用再深究原创 2020-11-16 10:37:30 · 1293 阅读 · 0 评论 -
根据APK文件查看应用的MD5签名
文章目录个人废话环节 哈哈查看方法个人废话环节 哈哈最近一个多月都在忙各种项目,哈哈,感觉有点忙不过来了。不过为了努力挣钱过上好生活,当个社畜有如何,我都看开了。切回正题,因为已经有个自己负责的项目完成开发且测试通过,所以在局方那里申请上线需要填一些应用的必要信息,其中有一项是应用的MD5签名信息。查看方法同学们跟着我的操作一起来做哦!修改 apk 文件的后缀为 .zip解压 zip 文件找到 META-INF/CERT.RSA 文件在 cmd 命令窗口中使用命令查看 M原创 2020-11-04 13:59:08 · 2014 阅读 · 4 评论 -
Android 在项目中使用 JiaoZiVideoPlayer 开源框架集成视频播放功能
文章目录背景框架 `Github` 地址说明添加相关依赖播放页布局集成使用 `Mediaplayer` 播放内核最终演示功能 `gif` 图 - 使用 `MediaPlayer` 播放内核集成使用 `ijk` 播放内核最终演示功能 `gif` 图 - 使用 `ijk` 播放内核总结背景对开源技术的学习以及在项目中快速集成使用。涉及 MediaPlayer 和 ijk 播放内核的集成。避免重复造轮子(ps:其实技术达不到那个水准,咳咳!下一个)。集思广益,对性能优化或者是各种情况分析都做的比较全面原创 2020-08-03 00:01:06 · 4194 阅读 · 8 评论 -
Android开发 MutableLiveData 简单使用说明
背景项目中有用到生命周期感知型组件 MutableLiveData,它是 LiveData 的子类,这里主要介绍 MutableLiveData 在项目中的简单使用。一些优点不用担心发生内存泄漏可以做到在组件处于激活状态的时候才会回调相应的方法,从而刷新相应的 UI不需要手动取处理数据的储存和恢复。它已经帮我们封装好了注意:当 Actiivty 不是处于激活状态的时候,如果你想 livedata setValue 之后立即回调 obsever 的onChange 方法,而不是等到 Ac原创 2020-07-19 18:48:05 · 19347 阅读 · 0 评论 -
从(App一)中跳转到(App二)中的页面
文章目录背景背景原创 2020-07-09 18:41:15 · 774 阅读 · 0 评论 -
Android 定位功能简单实现
文章目录背景实现方式实现关键代码结果验证图示背景在个人 App:Hi朋友中完善天气查询功能时,需要定位用户当前所在的城市,需要用到手机的定位功能。让用户打开天气查询页时,能够自动定位当前所在城市,然后获取该城市的天气数据,是一个提升用户体验度的事情。实现方式使用集成百度或者高德地图的相关sdk使用 adnroid sdk 自带的 api 来实现其他我这里使用的是第二种,为了能快速的上线第一版的个人 App,我没有集成第三方平台的 sdk。即使会出现最坏的情况:定位失败。那么也不要紧,用户原创 2020-06-28 16:53:01 · 7789 阅读 · 9 评论 -
ViewPager + Fragment中对Fragment数据懒加载的实现
文章目录背景分析实现完整代码背景项目中不可避免会用到,这里记录一下,方便自己和同学们,好记性不如烂笔头。理解后就不用专门记了,因为也确实没有太多复杂的东西。因为 viewPager 的预加载机制,所以我们为了让 fragment 使用起来更加流畅,提升性能,所以需要对 fragment 做一个懒加载的操作,当 fragment 对用户不可见时不加载数据。分析实现最开始的 fragment 代码如下:package com.example.myapplication.fra原创 2020-06-15 21:59:38 · 907 阅读 · 2 评论 -
个人 App 上线准备工作系列事项(集成一款数据采集、分析、管理的工具)
文章目录背景选择注册成为开发者创建应用获取 APPKEY集成方式-自动集成(推荐)添加 baidu 渠道baidu 渠道的 release 版安装查看友盟统计数据背景准备个人 App 的上线工作在开发的应用中集成数据统计功能,可以方便开发者分析用户数据来对应用做出对应的改进优化。选择使用 友盟的U-App(移动统计)产品注册成为开发者登录友盟官网执行注册流程,成为一名开发者,然后登录友盟创建应用获取 APPKEY如下图示:按照上图所示步骤进行应用 AppKey 的原创 2020-05-25 17:36:00 · 1006 阅读 · 0 评论 -
Android 危险权限使用申请 工具类 封装与简便使用
文章目录背景危险权限整理工具类与接口使用Activity中的使用背景危险权限的申请使用是现如今app开发必备的一部分内容,这里就简单的做一下记录,方便自己后期使用,可以快速的应用到项目中去。为什么需要危险权限?回答:当需要使用危险权限时才做申请并等待用户应答,不需要使用时用户可以自由的关闭这些危险权限,等到用到相关功能时才继续向用户申请危险权限的使用。危险权限顾名思义拥有就很危险,所以使用时才打开,后面可以自己自由的控制危险权限的开启,这样才是一个正确的权限使用规则。目前来说,基本上刚进入ap原创 2020-05-16 12:54:43 · 918 阅读 · 6 评论 -
Android中手势滑动监听简单实现
文章目录背景实现手势监听器的声明和创建对重写的相关方法 onScroll() 说明手势监听器接管View的触屏事件验证结果背景项目中要实现控件的滑动监听其实还是挺常见的,这里就简单的做一下记录。实现的方式也有好几种,我这里就只实现一种:自己觉得对手势滑动的判断比较准确且稳定的一个方式。实现手势监听器的声明和创建声明如下:private GestureDetector detector = null;// 声明一个手势监听器创建如下:// 创建 GestureDetector 对原创 2020-05-13 19:20:21 · 4160 阅读 · 2 评论 -
Android 开发--多渠道打包实现
文章目录背景多渠道是什么为什么要做多渠道打包多渠道打包原理怎么实现渠道信息的统计打包实现清单配置文件添加 meta-data 标签密钥生成签名配置创建风味维度与 Product 风味风味配置项的一些优化使用 gradle 的build tasks 进行打包多渠道包查看渠道信息验证背景学习多渠道打包,用的 demo 来做一个简单的演示。多渠道是什么渠道就是指不同的安装包发布平台:有应用宝、...原创 2020-05-04 17:20:10 · 1511 阅读 · 0 评论