SickeyLee
努力学习,天天向上,最美的诗和远方!
展开
-
如何在Android应用中安全地使用SQLite数据库,并通过SQLCipher进行加密保护
Android内置SQLite轻量级关系型数据库,可以在Android应用中存储、检索和管理结构化数据。SQLite是一个无服务器的、零配置的、事务性的SQL数据库引擎,非常适合用于移动设备和桌面应用程序中。:SQLite不需要单独的服务器进程或操作系统级别的配置。可以直接读写磁盘上的文件,非常高效且适合在资源有限的移动设备上使用。:SQLite支持ACID事务,提供了原子性、一致性、隔离性和持久性。保证了即使在发生故障的情况下,数据的完整性也能得到维护。原创 2024-04-23 09:20:41 · 62 阅读 · 2 评论 -
教你用Android Studio如何打jar包与aar包
就使用了的,然后我去查看下AS中的org.gradle.java.home的值,结果发现它一直是原来的jdk8路径,那我就手动去项目根目录中找到gradle.properties文件来修改下它的值。怕什么来什么,直接BUILD FAILED,接下来就得根据错误提示(错误提示我的Gradle要求的是jdk11,而我使用是jdk8...等解决方式)来逐步解决,错误如下。好了,本文到这里就算结束了哦,后续会聊聊项目与原生之间的相互调用、aar与jar的引入,sdk的接入等。添加个复制移动命名任务。原创 2024-03-06 15:05:53 · 228 阅读 · 0 评论 -
装饰你的APP:使用Lottie-Android创建动画效果
Lottie-Android是一个强大的开源库,由Airbnb开发,旨在帮助开发者轻松地在Android应用中添加高质量的动画效果。它基于Adobe After Effects软件中的Bodymovin插件,通过解析导出的JSON文件来渲染并播放复杂的矢量动画。Lottie-Android提供了许多令人印象深刻的功能和优点。首先,它支持从After Effects导出的JSON文件,这意味着设计师可以直接将他们创建的动画效果转化为Lottie可用的格式,而无需重新制作或重新编码动画。原创 2024-03-06 10:56:16 · 276 阅读 · 0 评论 -
Android内存泄漏知识点
当一个对象已经不需要在使用了,本应该被回收,而另一个正在使用的对象持有它的引用,导致对象不能被回收。因为不能被及时回收的本该被回收的内存,就产生了内存泄漏。如果内存泄漏太多会导致程序没有办法申请内存,最后出现内存溢出的错误。堆内存都有一定的大小,能容纳的数据是有限制的,当Java堆的大小太大时,垃圾收集会启动停止堆中不再应用的对象,来释放内存。当在极短时间内分配给对象和回收对象的过程就是内存抖动。原创 2024-02-20 17:13:31 · 44 阅读 · 0 评论 -
Fragment为什么不用构造函数传递参数?
以上代码中我们发现instantiate这个方法的作用是创建了fragment对象,Fragment是用反射的方式创建的,而且有mArguments来控制参数那么当然要用特定的方式来传递参数。直接在Fragment的构造方法中传递参数,可能会导致在Fragment重新创建时(如屏幕旋转等配置变更时),无法正确地恢复这些参数。在源码中会发现,Fragment的构造函数是空的,所以他和普通类的创建对象的方式不太一样。虽然从技术上讲可以在Fragment的构造方法中传递参数,但这通常被认为是不良的实践。原创 2024-01-24 10:47:40 · 89 阅读 · 0 评论 -
MPAndroidChart PieChart设置空数据 显示文字、颜色、字体
mPieChart.setNoDataTextColor(ContextCompat.getColor(this, R.color.颜色ID));MPAndroidChart PieChart中无数据默认图 显示“No chart data available.”//设置字体大小 单位默认px 可以用工具类转换dip2px 等。mPieChart.setNoDataText("暂无数据");我们可以用以下方法修改默认设置,可以定义文字、颜色、字体。原创 2024-01-18 15:40:25 · 99 阅读 · 0 评论 -
Android 布局菜鸟 android中的布局类型和特点?
在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。ConstraintLayout布局中的子控件需要约束关系,控件的相互依赖,这有点像相对布局 ,但是约束布局的功能更加强大,它很方便的在编辑器上进行添加删除控件,并设置属性值,简化操作。主要以水平或垂直方式来排列界面中的控件。在线性布局中,如果水平排列,垂直方向上只能放一个控件,如果垂直排列,水平方向上也只能放一个控件。原创 2024-01-16 17:24:37 · 259 阅读 · 0 评论 -
Java 从文本中获取url地址
~_|!:,.;原创 2023-08-25 14:35:42 · 241 阅读 · 0 评论 -
Android 源码下载(详细版)
经典好文推荐,通过阅读本文,您将收获以下知识点:一、下载AOSP前的准备二、国内网络下 clone 清华大学开源软件镜像三、编写Python脚本,开始下载android-10.0.0_r40 源码四、源码下载工具包五、参考文献。原创 2023-08-18 17:39:15 · 1237 阅读 · 0 评论 -
Android EditText 使用(详细版)
xml中使用EditText控件-- 自定义EditText 背景 --><EditTextandroid:hint="一、自定义EditText背景框"自定义EditText背景框-- 圆角-->--描边--><stroke</shape>实现效果自定义背景框实现。原创 2023-08-16 10:33:49 · 744 阅读 · 0 评论 -
Android Fragment (详细版)
Fragment片段,在Activity中常用于负责用户界面部分,可以将多个Fragment组合在一个Activity中来创建多窗口UI,或者在Activity中重复使用某个Fragment。您可以将Fragment视为Activity的模块化组成部分,Fragment具有自己的生命周期,能接收自己的输入事件,并且可以在Activity运行时候添加或者移除Fragment。Fragment必须嵌套在Activity中,其生命周期受Activity生命周期的影响。实现方法如下@Override。原创 2023-08-10 16:54:19 · 710 阅读 · 0 评论 -
Android的PopupWindow(详细版)
在学习PopupWindow之前,我们先了解一下PopupWindow的继承关系。↳是一个可以在Activity之上显示任意View的控件。在Android经常使用,效果跟Dialog效果类似,不同点在于可以控制显示的位置,比如底部显示等。原创 2023-08-04 08:38:55 · 1493 阅读 · 0 评论 -
Android手机信息获取(详细版)
经典好文推荐,通过阅读本文,您将收获以下知识点:一、 获取手机基本信息(厂商、型号等参数)二、设备信息获取实现图三、 获取手机设备 宽、高、IMEI 信息四、 获取手机厂商名、产品名、手机品牌、手机型号、主板名、设备名五、获取手机硬件名、SDK版本、android版本 、语言支持、默认语言六、 获取 SD 卡存储信息七、 获取手机 RAM、ROM存储信息八、DeviceInfoUtils 封装类九、SDCardUtils 封装类十、参考文献。原创 2023-08-03 09:43:39 · 1690 阅读 · 0 评论 -
Android Intent 使用(详细版)
*** 2.自定义 发送短信* **/// 修改 Intnent 选择器Tittle// 验证是否有Activity 接收= null) {原创 2023-08-02 08:43:26 · 490 阅读 · 0 评论 -
Android SharedPreferences 使用(详细版)
是Android的一个接口类,是Android数据存储(保存内部)的一种方法。主要以*.xml的形式保存在Android/data/data/com.***包名/shared_prefs下,BooleanIntFloatLongString。原创 2023-08-01 08:38:59 · 740 阅读 · 0 评论 -
Android HTTP使用(详细版)
在面试过程中,HTTP 被提问的概率还是比较高的。小林我搜集了 5 大类 HTTP 面试常问的题目,同时这 5 大类题跟HTTP 的发展和演变关联性是比较大的,通过问答 + 图解的形式由浅入深的方式帮助大家进一步的学习和理解 HTTP 协议。HTTP 基本概念Get 与 PostHTTP 特性HTTPS 与 HTTPHTTP/1.1、HTTP/2、HTTP/3 演变提纲。原创 2023-07-31 10:59:19 · 956 阅读 · 0 评论 -
Android GridView使用(详细版)
在学习GridView 之前,我们需要先了解GridView的继承关系,GridView跟ListView很类似,Listview主要以列表形式显示数据,GridView则是以网格形式显示数据,掌握ListView使用方法后,会很轻松的掌握GridView的使用方法。原创 2023-07-31 08:54:21 · 1527 阅读 · 0 评论 -
设计模式系列:经典的单例模式
购物车作为一个共享的对象,把用户选的商品信息保存在一个唯一的实例中,可以在整个用户会话中访问和更新,这样可以保证购物车中的数据是正确、完整和一致的。:在Spring中,通过配置文件或注解方式定义的Bean对象通常也是单例的,默认情况下,Spring会把它们当作单例来管理。:购物车需要加载和处理一些数据,假如用户每次访问页面都创建一个新的购物车实例,这样就会占用更多的资源,并且、频繁地创建和销毁购物车实例,也会增加系统的负担和响应时间。可见,不同线程得到的对象都是同一个,符合“单例”。原创 2023-07-28 09:12:27 · 1289 阅读 · 0 评论 -
Android 设备兼容性使用(详细版)
开发过程中适应不同图片时候的参考总结密度建议尺寸手机屏幕密度DPI图片分辨率基准图缩放倍数48 * 48320x4801.072 * 721.596 * 96960*7202.0144 * 1441280×7203.0192 * 1921920*10804.0。原创 2023-07-28 08:54:18 · 426 阅读 · 0 评论 -
ListView使用(详细版)
ListView是Android中显示数据常用的控件之一,主要用于显示一个垂直滚动的数据集合,随着Android 手机对性能要求越来越高,一个更现代,更灵活,显示列表性能更优异的将会逐渐取代ListView的数据显示方式,但是目前为止,ListView在开发中还是十分常见的,并未被弃用。// 当前适配器中加载数据的总条目@Override// 根据指定下标获取对应item 的view@Override// 根据指定下标获取当前item的id@Override/**原创 2023-07-27 11:56:26 · 170 阅读 · 0 评论 -
Android Dalvik 虚拟机(详细版)
经典好文推荐,通过阅读本文,您将收获以下知识点:1.Java 语言在Android 上运行流程2.虚拟机发展过程3.Android Dalvik 模式4.Android N 中dex2oat 原理以及模式5.如何判断dex2oat 采用的相关参数6.如何查看dex2oat 的log7.什么时候进行dex2oat8.手机反应慢的原因9.解决手机反应慢的方法10.参考文献。原创 2023-07-27 09:41:09 · 427 阅读 · 0 评论 -
Notification 使用(详细版)
通知是应用向用户显示的消息提示,当发送通知时,通知将先以图标的形式显示在通知区域中。用户可以打开下拉通知栏查看通知的详细信息。通知区域和下拉通知栏均是由系统控制的区域,用户可以随时查看。通知在Android用户界面的一个重要部分,其使用方法请看以下内容:通知区域中的通知下拉通知栏中的通知1.实现效果自定义通知效果图2.实现代码/*** 自定义样式通知* **//**** 自定义Remoteview* **/原创 2023-07-21 10:51:32 · 279 阅读 · 0 评论 -
Dialog 使用(详细版)
在学习Dialog 之前,我们先了解一下Dialog的基础关系。Dialog是Android常用控件之一,主要以弹出框的形式与用户进行交互。对话框是提示用户作出决定或输入额外信息的小窗口。对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件。1.实现效果如下:自定义图文对话框/*** 自定义图文对话框实现**/// 这里可以处理一些点击事件builder.setIcon(R.drawable.gril).setTitle("自定义对话框")原创 2023-07-21 08:35:51 · 1034 阅读 · 0 评论 -
Handler 使用(详细版)
Handler是Android中用来更新UI 的一套消息处理机制。Handler允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UI Thread,子线程不能更新UI。如果子线程想更新UI,需要通过Handler发送消息给主线程,进而达到更新UI的目的。Handler负责发送Message到Looper负责从遍历Message,然后直接把遍历的消息回传给Handler自己,通过Handler自身的处理更新UI等操作。主线程、子线程间通信简单流程。原创 2023-07-19 11:48:33 · 632 阅读 · 0 评论 -
kotlin<第六篇>:协程(一)
CoroutinesScope:定义协程必须指定其CoroutinesScope,它会跟踪所有协程,同样它还可以取消由它所启动的所有协程。ifecycleScope,只能在Activity、Fragment中使用,会绑定Activity和Fragment的生命周期。GlobalScope,生命周期是process级别的,即使Activity或Fragment已经被销毁,协程仍然在执行。当某个协程任务丢失,会导致内存、CPU、磁盘等资源浪费,甚至发送一个无用的网络请求,这种情况称为。六、协程的挂起与恢复。原创 2023-03-30 10:20:31 · 300 阅读 · 0 评论 -
kotlin<第五篇>:集合(六)
集合的元素都是字符串,字符串的自然顺序是比较字符串的大小。【4】使用 sortedBy 自定义一个自然顺序。sortedDescending():降序排序。集合聚合操作:基于集合内容返回单个值的操作。sorted(): 升序排序。原创 2023-03-29 10:13:17 · 151 阅读 · 0 评论 -
kotlin<第五篇>:集合(四)
【5】检查集合中是否为空或非空。原创 2023-03-29 08:48:40 · 141 阅读 · 0 评论 -
kotlin<第五篇>:集合(三)
在此 Map 中,每个键都是 lambda 结果,而对应的值是返回此结果的元素 List。【4】使用 Windowed 检索给定大小的集合元素中所有可能区间。【5】使用 zipWithNext 创建接收器集合的相邻元素对。【3】使用 chunked 将集合分解成给定大小的"块"takeLast:从尾开始获取指定数量的元素。dropLast:从尾开始去除指定数量的元素。take:从头开始获取指定数量的元素。drop:从头开始去除指定数量的元素。它们均为重载操作符,返回具有给定索引的集合元素列表。原创 2023-03-28 09:55:55 · 276 阅读 · 0 评论 -
kotlin<第五篇>:集合(二)
这两个函数都使用将映射条目作为参数的转换,因此可以操作其键与值。【4】使用打平(flat)转换(将一个集合转换成另一个集合)映射转换时,有两个选择:转换键,使值保持不变,反之亦然。转换过程中可能为null,为了防止null值,可用。转换是根据两个集合中具有相同位置的元素构建配对。【3】使用关联(associate)转换。,来从结果集中过滤掉 null 值。要将指定转换应用于键,请使用。【2】使用合拢(zip)转换。根据否定条件来过滤集合。原创 2023-03-28 09:33:33 · 290 阅读 · 0 评论 -
kotlin<第四篇>:基础语法(二)
【代码】kotlin<第三篇>:基础语法(二)原创 2023-03-24 10:16:51 · 115 阅读 · 0 评论 -
kotlin<第三篇>:函数(四)
【代码】kotlin<第三篇>:函数(四)原创 2023-03-23 11:31:03 · 113 阅读 · 0 评论 -
kotlin<第三篇>:函数(二)
【代码】kotlin<第三篇>:函数(二)原创 2023-03-23 09:42:03 · 117 阅读 · 0 评论 -
kotlin<第二篇>:类与继承
kotlin原创 2023-03-22 11:02:31 · 217 阅读 · 1 评论 -
kotlin<第一篇>:基础语法一
【代码】kotlin:基础语法一。原创 2023-03-22 09:50:50 · 197 阅读 · 0 评论 -
Glide简单封装
【代码】Glide简单封装。原创 2023-03-21 14:48:04 · 228 阅读 · 0 评论 -
gson 工具类
【代码】gson 工具类。原创 2023-03-14 14:26:17 · 578 阅读 · 0 评论 -
websocket介绍
websocket介绍原创 2023-03-08 09:01:12 · 473 阅读 · 0 评论 -
直播采集端(推流端)和播放端的处理逻辑介绍
直播采集端(推流端)和播放端的处理逻辑介绍原创 2023-03-03 13:36:03 · 136 阅读 · 0 评论 -
基本概念简介(码率,FPS(帧数),分辨率,RTMP协议)等的介绍
基本概念简介(码率,FPS(帧数),分辨率,RTMP协议)等的介绍原创 2023-03-03 13:24:08 · 426 阅读 · 0 评论 -
三方直播SDK对比(腾讯云,阿里云,网易云信,七牛云,金山云,声网,即构科技)
三方直播SDK对比(腾讯云,阿里云,网易云信,七牛云,金山云,声网,即构科技)原创 2023-03-02 14:35:51 · 582 阅读 · 0 评论