
Android
文章平均质量分 64
安卓开发系列课程
全面解读
博客包括:.NET、Java、C#、C\C++、python、go、node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、小程序等相关使用及进阶知识。
展开
-
【Android】代码中将 SVG 图像转换颜色
在上述代码中,我们首先导入了 AndroidSVG 库,并使用 getFromResource 方法获取了 SVG 图像资源文件。最后,我们将 SVG 图像设置到 ImageView 中。要在代码中将 SVG 图像转换为黑色,你可以使用一个库,例如 AndroidSVG 或 SVG-Android。你需要在项目中导入 AndroidSVG 库,并且需要将你的 SVG 文件放置在 res/raw 目录下,以便使用 getFromResource 方法获取。原创 2024-06-20 14:42:04 · 988 阅读 · 0 评论 -
【android】用 ExpandableListView 来实现 TreeView树形菜单视图
创建一个 ExpandableListAdapter 来为其提供数据。以下演示了如何使用 ExpandableListView 来展示树形结构的数据:首先,在布局文件中添加 ExpandableListView:在上述代码中,我们创建了一个自定义的 ExpandableListAdapter,用于管理父项和子项的数据展示。在 getChildView 和 getGroupView 方法中,我们根据数据来填充父项和子项的视图。原创 2024-06-20 09:36:13 · 784 阅读 · 0 评论 -
【Android】实现 MVVM 架构,创建 ViewModel、LiveData 和数据绑定等组件在 XML 中使用数据绑定
在 XML 布局文件中,我们使用了数据绑定来将 ViewModel 的数据和 EditText、TextView 绑定在一起。在 Activity 中,我们使用 DataBindingUtil 来设置数据绑定,并将 ViewModel 与 XML 布局文件进行绑定。在 Android 中实现 MVVM 架构,需要创建 ViewModel、LiveData 和数据绑定等组件,并在 XML 中使用数据绑定来将 ViewModel 的数据和 UI 绑定在一起。原创 2024-04-27 16:31:02 · 829 阅读 · 0 评论 -
Android 获取sha1的快速有效的简单方法
选择你要查看的apk,一键复制 sha1 值。把apk用鼠标左键拖动到命令行自动输入路径。原创 2024-04-24 19:21:21 · 998 阅读 · 1 评论 -
【Android】使用ProGuard来进行代码混淆
在Android应用中,您可以使用ProGuard来进行代码混淆。代码混淆可以帮助减小APK文件的大小并加强应用的安全性,因为它会对代码进行压缩和混淆,使得反编译和逆向工程变得更加困难。要在Android应用中配置代码混淆,您需要在文件中定义混淆规则。该文件一般位于您的Android项目的/app目录下。原创 2024-03-10 13:15:46 · 739 阅读 · 0 评论 -
【Android】Java NIO(New I/O)的`Selector`类来实现非阻塞的Socket监听
如果读取到的字节数为-1,表示客户端断开连接,我们关闭通道并在日志中打印出"设备已断开连接"。如果读取到有效的数据,我们可以在代码中处理这些数据,并通过通道向客户端发送回复。在迭代器循环中,我们根据键的类型判断通道是否可接受连接或可读取数据。如果你不想使用循环来监听客户端的连接和数据,你可以使用Java NIO(New I/O)的。如果没有就绪的通道,我们可以继续等待。类提供了一种选择一组已经就绪的通道的机制,这样你就不需要使用循环来等待连接和数据。方法中,我们首先读取客户端发送的数据,并将其存储在。原创 2023-12-08 21:48:11 · 777 阅读 · 0 评论 -
【Android】使用Netty库来实现Socket接收
在Android中使用Netty来实现Socket接收是可行的。Netty是一个高性能的网络通信框架,支持多种协议,包括原生的Socket通信。希望以上示例能帮助你在Android中使用Netty实现Socket接收。请注意适当处理网络通信的异常和关闭操作,以确保代码的稳定性和安全性。请注意,为了避免在主线程中执行耗时的操作,建议在后台线程中执行。是一个自定义的处理程序,用于处理接收到的数据。在上述示例中,我们创建了一个Netty的。接下来,在合适的时机创建Netty的。首先,在你的Android项目的。原创 2023-12-08 16:55:17 · 1197 阅读 · 0 评论 -
【WPF】应用程序和已知安卓设备的局域网IP之间进行通信
这只是一个基本的示例,实际应用中可能需要处理更多的错误和异常情况。同时,建议你在进行Socket通信时,考虑安全性和网络稳定性等因素。要在WPF应用程序和已知安卓设备的局域网IP之间进行通信,可以使用Socket通信。原创 2023-12-08 08:33:10 · 909 阅读 · 0 评论 -
【Android】使用 adb 命令行工具结合 pm列出 Android 设备上已安装应用的应用名称和包名
要列出 Android 设备上已安装应用的应用名称和包名,你可以使用 adb 命令行工具结合 pm(PackageManager)命令来实现。首先,确保你已经安装了 Android SDK,并将 adb 工具添加到系统的环境变量中。通过以上的 adb 命令,你可以列出 Android 设备上已安装应用的应用名称和包名。上述命令将列出所有已安装应用的包名和应用名称。表示用户 ID 为 0 的用户(通常为设备的拥有者用户)。请注意,如果你的设备有多个用户,你可能需要使用。上述命令将仅列出包名,不包括应用名称。原创 2023-08-31 15:20:42 · 3174 阅读 · 1 评论 -
【Android】 No matching variant of com.android.tools.build:gradle:[版本号] was found
确保您的构建脚本中指定的Gradle插件版本与您要使用的com.android.tools.build:gradle版本是兼容的。您可以尝试更新Gradle插件版本或选择与您正在使用的Gradle插件版本兼容的com.android.tools.build:gradle版本。这个错误意味着在配置构建工具的Gradle插件时,没有找到与所需配置匹配的com.android.tools.build:gradle:8.1.1版本。确保您的构建脚本中的其他依赖项和配置与您正在使用的Gradle插件版本兼容。原创 2023-08-23 11:11:01 · 6949 阅读 · 0 评论 -
【GreenDao】 实现数据库迁移,使用 GreenDao 提供的 MigrationHelper类辅助完成
类提供的方法来执行各种升级操作,比如创建新的表、修改表结构、迁移数据等。请注意,上述示例代码仅供参考,具体的迁移操作可能需要根据你的实际需求进行调整。要在 GreenDao 中实现数据库迁移,可以使用 GreenDao 提供的。注意,在升级过程中,可能需要创建新的表、修改表结构、迁移数据等操作。这样,在数据库升级时,GreenDao 会自动调用我们定义的迁移类的。首先,按照 GreenDao 的使用方式,配置相关依赖和生成代码。在上述示例代码中,我们将数据库版本号设置为 2。在该方法中,我们可以使用。原创 2023-07-31 10:00:00 · 777 阅读 · 0 评论 -
SharedPreferences工具类保存List对象,自动完成序列化和反序列化
使用这两个方法,你可以方便地将List对象序列化为JSON字符串并存储到SharedPreferences中,以及从SharedPreferences中获取JSON字符串并反序列化为List对象。setList()方法接收一个Context对象和一个List对象作为参数,将List对象序列化为JSON字符串,并使用SharedPreferences将其存储起来。在上述代码中,我们定义了一个SharedPreferencesUtils工具类,其中包含了setList()和getList()方法。原创 2023-07-16 14:51:52 · 1358 阅读 · 0 评论 -
【Android】实现雷达扫描效果,使用自定义View来绘制雷达扫描动画
接着,我们每次调用onDraw时增加radius的值,使圆圈半径逐渐增大,并通过invalidate()方法触发View的重绘。在onDraw方法中,我们首先获取View的中心坐标,然后使用画笔绘制一个圆圈,圆心为View的中心坐标,半径为radius。最后,我们在radius超过View宽度和高度的一半时,将radius重置为0,以实现循环的雷达扫描效果。在上述代码中,我们创建了一个RadarView类,继承自View,并在构造函数中初始化了画笔和半径。原创 2023-06-27 21:53:03 · 1387 阅读 · 0 评论 -
【Android】使用TimePickerDialog和SeekBar获取用户选择的起始时间和持续时间使用Canvas绘制图形表示时间段的分布
注意:以上代码仅实现了时间段分布图的绘制和显示,如果需要将图形保存到文件或其他操作,需要根据实际需求进行扩展。来获取用户选择的起始时间和持续时间。然后,使用Canvas绘制图形来表示时间段的分布。要实现Android上的24小时有效时间段分布图并精确到秒,可以使用。原创 2023-06-23 12:17:23 · 284 阅读 · 0 评论 -
【Kotlin】使用 ProgressBar 的样式属性来实现圆形进度条,进度使用gradient渐变效果
Android ProgressBar 默认提供了水平和圆形两种进度条,水平进度条通过控件实现,而圆形进度条通过控件实现。如果想要将控件设置为圆形进度条,可以使用的样式属性来实现。首先,在布局文件中添加一个控件,并设置其样式为style在上面的代码中,我们设置了的样式为,并将属性设置为true,表示使用不确定模式。然后,在 styles.xml 文件中,定义一个名为的样式,将其父样式设置为,并将其样式属性设置为一个圆形进度条的 Drawable:原创 2023-06-20 19:40:48 · 3492 阅读 · 0 评论 -
【kotlin】使用MPAndroidChart实现PieChart(饼图)并设置每个数据的颜色、标签等属性
在上面的代码中,我们首先创建了一个包含三个数据的 List,每个数据包含一个数值和一个标签。然后,我们创建了一个 PieDataSet 对象,将 List 中的数据添加到其中,并设置了数据的颜色、标签颜色等属性。在上面的代码中,我们首先将 PieDataSet 对象添加到 PieData 中,然后将 PieData 设置给 PieChart 控件,并调用了。在运行代码后,将会显示一个包含三个扇形的饼图,每个扇形的颜色、标签和大小都根据数据自动计算。可以通过修改数据集中的数据、颜色等属性来改变图表的外观。原创 2023-06-20 19:33:59 · 2734 阅读 · 0 评论 -
Please change the configuration name to ‘kapt‘ for these artifacts: ‘com.jakewharton:butterknife-com
ButterKnife 使用的是 kapt 插件,而 dataBinding 使用的是 android-apt 插件(或者是默认的 dataBinding 插件)。具体来说,需要将 ButterKnife 的编译器插件名称改为 kapt,将 dataBinding 的编译器插件名称改为 dataBinding 或者不做任何修改(使用默认的 dataBinding 插件)。这个错误提示出现的原因是在使用 ButterKnife 和 dataBinding 时,Gradle 配置中使用了错误的编译器插件名称。原创 2023-06-19 15:09:37 · 638 阅读 · 0 评论 -
【Android】Jetpack的9大组件用代码的方式快速理解
Lifecycle组件可帮助开发者更好地管理Android组件(如Activity、Fragment等)的生命周期。Room组件提供了一个SQLite数据库的抽象层,帮助开发者更容易地进行本地数据存储。LiveData组件以响应式编程的方式,帮助开发者在组件之间传递和观察数据。Data Binding组件提供了一种用于将UI组件和数据模型绑定的方式。Security组件提供了一些用于增强应用程序安全性的组件和工具。ViewModel组件提供了一个用于存储和管理UI相关数据的类。原创 2023-06-19 07:00:00 · 914 阅读 · 0 评论 -
Kotlin和Java的区别,全面解读超详细,114个知识点解读
Java:使用 if-else if-else 或 switch-case 来实现 when 表达式。Java:从 Java 10 开始支持局部变量类型推断,但需要使用关键字。原创 2023-06-15 18:39:45 · 755 阅读 · 0 评论 -
【RxJava】Observable.create()链式编程下释放资源或状态
在 RxJava 中,方法用于创建一个新的 Observable 对象。这个方法需要一个对象作为参数,用于定义 Observable 的行为。对象通常会包含一些资源或状态,例如网络连接、文件句柄、线程等。因此,当 Observable 不再需要时,需要手动释放这些资源或状态,以避免内存泄漏或资源浪费的问题。要释放dispose()Observable需要注意的是,在使用方法创建 Observable 对象时,需要确保正确释放所有资源,以避免内存泄漏或资源浪费的问题。原创 2023-06-15 08:15:00 · 1371 阅读 · 0 评论 -
IntelliJ IDEA集成开发环境(IDE)特殊功能的注释用途的示例
IntelliJ IDEA是一款功能强大的集成开发环境(IDE),支持各种编程语言和技术。在IDEA中,可以使用各种特殊功能的注释来实现更高效的开发和维护。这些特殊功能的注释可以帮助您更好地组织和维护代码,并提高代码的可读性和可维护性。在使用这些注释时,请注意保持一致性和标准化,以便其他开发人员和您自己能够更轻松地理解和使用代码。原创 2023-06-15 05:30:00 · 200 阅读 · 0 评论 -
【GreenDao】通过DevOpenHelper 子类设置存储数据为最近一个月并自动删除过期数据
在 createTrigger() 方法中,我们使用 SQLite 的 strftime() 函数来计算出当前时间减去一个月的时间戳,并将其与 Note 实体类中的 timestamp 字段进行比较,如果 timestamp 小于该时间戳,则删除该条数据。接下来,在 DaoMaster 中添加一个 DevOpenHelper 的子类,用于在创建数据库时添加一个触发器,以便在数据过期时自动删除数据。在上述代码中,我们添加了一个类型为 long 的 timestamp 字段,用于记录数据的插入时间。原创 2023-06-10 09:10:43 · 1539 阅读 · 0 评论 -
【Android 】Android studior中res下创建anim和animator动画,理解如何使用不同的文件夹
文件夹用途动画类型示例anim存放逐帧动画和补间动画的资源文件逐帧动画、补间动画淡入淡出、逐帧动画、缩放动画animator存放属性动画的资源文件属性动画、多值动画旋转动画、缩放和透明度动画在 Android Studio 中,anim 和 animator 文件夹都用于存放动画相关的资源文件,但它们的用途和使用方式略有不同。原创 2023-06-10 08:30:00 · 3461 阅读 · 0 评论 -
【Android】使用AnimationDrawable实现闪烁红光动画效果
实现闪烁红光效果可以使用Android中的Animation和Drawable资源。原创 2023-06-10 08:00:00 · 1140 阅读 · 0 评论 -
【Android】SQLite、Room 和 GreenDAO 修改主键和迁移数据的方法
然后创建一个新的实体对象,使其拥有新的主键,并将其它属性设置为原始实体对象的属性。接着使用delete()方法删除原始实体对象,最后使用insert()方法将新的实体对象保存到数据库中。需要注意的是,在修改主键之前,应该确保新的主键在数据库中是唯一的,否则可能会出现冲突。在删除原始实体对象之后,需要将新的实体对象保存到数据库中,否则数据将会丢失。在GreenDao中,实体对象的主键是不可修改的。如果需要修改主键,需要先删除原始实体对象,然后创建一个新的实体对象,使其拥有新的主键,并将其保存到数据库中。原创 2023-06-08 08:30:00 · 1736 阅读 · 0 评论 -
【Android】代码方式实现调整系统显示大小为最小
在这个代码中,我们使用 Settings.System 类的 putInt() 方法来将系统显示大小设置为 50。请注意,这个值的范围是从 0 到 100,其中 0 表示最小,100 表示最大。在这个代码中,我们首先获取当前应用程序的配置信息,并将其存储在一个 Configuration 对象中。然后,我们将 fontScale 属性设置为 0.5,这将使应用程序的显示大小变为最小值。最后,我们使用 updateConfiguration() 方法将更改应用到应用程序的配置中。原创 2023-06-07 14:17:41 · 2066 阅读 · 0 评论 -
【Android】实现Material Design风格的progressbar
使用 Android 自带的止步方法是改变 ProgressBar 样式为“@android:drawable/xxx”,xxx可以根据自己的需求设置,常用的有 spinner、small、large 等。在 Android 中,Material Design 风格的 ProgressBar 可以使用系统提供的 ProgressBar 和第三方库来实现。通过使用这些实现,你可以创建出各种不同样式、颜色和大小的 Material Design 风格的 ProgressBar。这将生成一个圆形的条纹状进度条。原创 2023-06-06 07:00:00 · 681 阅读 · 0 评论 -
Android SwitchCompat 实现类似IOS的UI效果
点击链接后,会自动下载相应的图片资源。需要注意的是,在使用 SwitchCompat 控件时,请确保 theme 是 AppCompat 的主题,否则将无法正常运行。创建对应的开启和关闭的圆形按钮,例如 switch_thumb_on.png 和 switch_thumb_off.png。在这里,我们定义了两个 item,设置选择器的状态,使其能够根据 SwitchCompat 的状态来切换圆形按钮的状态。创建对应的开启和关闭的图片,例如 switch_on.png 和 switch_off.png。原创 2023-06-05 14:04:40 · 1658 阅读 · 2 评论 -
【Android】Greendao在RxQuery中isEmpty()不为空时用onebyone继续查询,以及room中用RxJava实现
接着,我们创建了一个 Query 对象,并使用 Query.rx().isEmpty() 方法将 Query 对象转换为 RxQuery 对象,然后使用 subscribe() 方法订阅 Observable 对象。接下来,我们演示如何使用 RxQuery.isEmpty() 方法判断查询结果是否为空,如果不为空,则使用 RxQuery.oneByOne() 方法继续查询。我们需要查询 age=20 的用户列表,如果结果不为空,则使用 oneByOne() 方法逐个读取查询结果并执行特定的操作。原创 2023-06-05 08:30:00 · 685 阅读 · 0 评论 -
分别使用Observable、LiveData、RxJava监听List<T>的内容变化
我们还在MainActivity中将data.observe()设置在onCreate()方法中,以便观察LiveData中的数据是否发生变化,并在观察者Observer的onChanged()方法中更新UI。无论使用哪种方式,使用 RxJava 监听 List 的内容变化常用于在订阅元素的同时,实时的对 List 中的数据进行增删改的操作,同时提高了代码的可维护性和可读性。a) Observable类:被观察者类,当列表发生变化时,调用其notifyObservers()方法,通知观察者。原创 2023-06-05 07:30:00 · 2251 阅读 · 0 评论 -
Android 开源USB读写demo,实现串口通信
优快云 下载链接如果你不想下载可以阅读下面教程并复制代码。原创 2022-12-01 11:27:50 · 4080 阅读 · 1 评论 -
androidX org.eclipse.paho.android.service:报错Program type already present
项目升级至Android X环境下面这个包不支持解决方案把该包下载下来,源码导入项目,适配源码到AndroidX环境记得修改新的MqttService路径解决方案二我已经帮你改好该包并适配Android X你只需要逐个新建以下几个类到项目某个文件夹下面即可原创 2022-10-20 11:42:06 · 2016 阅读 · 0 评论 -
Android 内置webview避免外部跳转或内嵌chrome植入复杂vue项目
webview 同时支持 WebChromeClient 和 WebViewClient 但总是跳转到chrome浏览器。原创 2022-09-09 21:22:37 · 3278 阅读 · 0 评论 -
Android 复制文本系统剪切板xml设置和java代码长按复制实现
获取剪切板管理器创建字符型ClipData将数据复制到剪切板从剪切板中获取数据复制用图片(通过右键图片另存为方式保存)复制用图片(通过右键图片另存为方式保存)复制用图片(通过右键图片另存为方式保存)原创 2022-09-03 17:40:53 · 1501 阅读 · 0 评论 -
Android Studio 4.0+ 右键新建无Java class 问题解决
网上找到的资料都是 Android studio 低版本的,无法解决我的最新版本出现的相似问题最简单的方法:将鼠标位置放在java文件上 而不是文件夹路径上再点击 鼠标右键。原创 2022-09-02 13:24:17 · 4603 阅读 · 0 评论 -
Android RecycleView 子项定制,RecycleAdapter自适应不同的layout
不同的view中可声明不同的控件,使用instance 方法识别不同的ViewHolder原创 2022-09-01 18:20:34 · 626 阅读 · 0 评论 -
Call to ‘Thread.sleep()‘ in a loop, probably busy-waiting Inspection info: 彻底解决
可以看到是最新的版本,依旧会报错,排除版本问题。告警信息中文翻译可以看到黄色代码报警标志已经消失。基于Handler的Android定时器与倒计时器源码地址:Github AndroidTimer支持操作 :TODO add ticker sequence使用CountTimerCountDownTimer截图参考自 Android SDK 中的 CountDownTimer............原创 2022-07-13 10:45:01 · 12071 阅读 · 0 评论 -
android 新版阿里云maven仓库
// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories { maven { url "https://jitpack.io" } maven { url 'https://maven.aliyun.com/repository/releases' } maven { url 'https原创 2022-05-11 17:49:58 · 1501 阅读 · 0 评论 -
Android Unable to find source java class:<File>because it does not belong to any of the source dirs:
报错类型:Unable to find source java class: ‘C:\CustomData\Sigbit\Android\GitProgect\EClassBoard_arcsoft\camerakit\src\main\utils\com\flurgle\camerakit\AspectRatio.java’ because it does not belong to any of the source dirs:问题原因在 Android studio 将类似于 main.java原创 2022-05-05 14:50:04 · 1318 阅读 · 0 评论 -
Android can only be called from within the same library group prefix (referenced groupId=androidx
告警提示ArgbEvaluator.getInstance can only be called from within the same library group prefix (referenced groupId=androidx.vectordrawable with prefix androidx from groupId=SchoolFacePay)Inspection info:This API has been flagged with a restriction that has原创 2022-04-15 15:33:29 · 5958 阅读 · 0 评论