多线程实现方式 定义一个线程子类,并继承Thread类。 定义一个runnable子类,实现runnable接口,并将该用runnable子类传递给一个Thread类对象。 上述使用runnable接口定义多线程的好处 在java中不允许多继承的存在,若想简介使用多继承可以利用接口来实现若想定义一个已实现某个抽象的父类的线程时,在不使用接口时,无法继续继承Thread类,那么问题就出现了,这也就是
2023-03-15 michael007js 88
android 判断是否rootimport java.io.File;import java.util.Arrays;import java.util.List;public class AExecuteAsRoot { public static boolean isRootSystem() { if(isRootSystem1()||isRootSystem2()){
2023-03-15 michael007js 295
正三角<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/shape_i
2023-03-09 michael007js 577
DiffUtil 是 Android 中用于计算两个列表之间差异的实用工具类。它可以优化 RecyclerView 的刷新操作,仅刷新需要更新的部分,从而提高性能并减少不必要的操作。本篇博客将从简单到高级,介绍使用 DiffUtil 的基本流程以及一些高级用法,帮助开发者更好地使用 DiffUtil。什么是 DiffUtil?DiffUtil 是一个用于计算两个列表之间差异的实用工具类。它通过比较
2023-03-07 michael007js 495
当今移动应用开发,常常需要使用各种集合类型来存储和操作数据。Kotlin 提供了 Collection KTX 扩展库,为我们操作集合提供了非常方便的 API。在本篇文章中,我们将介绍 Collection KTX 中包含的所有扩展函数,让你的集合操作变得更加高效、简单、易读。除了 Collection KTX,Kotlin 还提供了许多其他扩展库,例如 Android KTX、Coroutine
2023-03-07 michael007js 260
问题错误特征Could not run phased build action using Gradle distribution 'https://services.gradle.org/distributions/gradle-5.5.1-all.zip' A problem occurred configuring root project 'PlanAssistan
2023-03-05 michael007js 215
常用类型转换符详细说明示例%s字符串类型"喜欢请收藏"%c字符类型'm'%b布尔类型true%d整数类型(十进制)88%x整数类型(十六进制)FF%o整数类型(八进制)77%f浮点类型8.888%a十六进制浮点类型FF.35AE%e指数类型9.38e+5%g通用浮点类型(f和e类型中较短的)不举例(基本用不到)%h散列码不举例(基本用不到)%%百分比类型%(%特
2023-03-03 michael007js 119
背景:CardView是Google的Material Design风格,并且开放出来的自定义api极少,无法满足非Material Design风格的UI阴影设计
2023-03-03 michael007js 147