自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android EditText设置边框

Android EditText设置边框简介Android应用程序中给EditText设置边框。效果图:快速开始在res/drawable目录下新建样式文件 edit_background.xml。<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.an...

2019-09-05 15:40:39 35884 1

原创 Android 圆角按钮的实现

Android 圆角按钮的实现效果图:在res/drawable目录下新建按钮样式文件 btn_normal.xml(正常状态) 和 btn_pressed.xml(按下状态)。btn_normal.xml文件:&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;shape xmlns:android="http://schema...

2019-03-14 16:00:15 34700 1

原创 在线词云工具生成词云图——Wordart的使用

在线词云工具生成词云图——Wordart的使用前言:词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。WordArt简介: WordArt is an online word art creator that enables you to create amazing and

2018-01-09 16:50:33 130242 18

原创 Android 平台上方便实用的 Shell 终端模拟工具

Android 平台上方便实用的 Shell 终端模拟工具前言: 一直在苦苦寻找适用于 Android 平台上方便实用的 Shell 终端模拟工具。找到了安卓shell终端,但是使用起来不太方便。于是另外找了其他的工具,终于在Google Play上发现了它的踪影,虽然是国外大神所开发,但其原生支持中文,功能强大,使用方便。【应用介绍】 JuiceSSH 支持连接本机 Shell、Telnet 和

2017-11-20 10:47:44 32036

原创 Android自动朗读(TTS)的实现

Android自动朗读(TTS)的实现前言: Android提供了自动朗读支持。可以对指定文本内容进行朗读,从而发生声音;还允许把文本对应的音频录制成音频文件,方便以后播放。

2017-10-11 09:59:49 16880 5

原创 Android空引用问题的解决方法——on a null object reference

Android空引用问题的解决方法——on a null object reference前言:今天写了一个小程序,自定义view组件,但是却怎么也运行不起来,一直空指针引用报错。 java.lang.NullPointerException: Attempt to invoke virtual method ‘android.graphics.Paint$FontMetrics android

2017-09-26 09:57:02 28703 2

原创 Android进度条ProgressBar颜色的渐变设置

Android进度条ProgressBar颜色的渐变设置

2017-09-01 21:39:23 15294

原创 Android 使用SQLite保存数据

对于重复数据或结构化数据(例如联系信息),将数据保存到数据库是理想选择。软件包中提供了在 Android 上使用数据库所需的 API。本篇文章介绍在 Android 上使用SQLite数据库。SQL 数据库的主要原则之一是架构,即数据库组织方式的正式声明。架构反映在你用于创建数据库的 SQL 语句中。您可能会发现创建伴随类(称为协定类)很有用,该类以系统化、自记录的方式明确指定了架构的布局。协定类是定义 URI、表和列名称的常量的容器。通过协定类,您可以在同一软件包的所有其他类中使用相同的常量。

2024-03-29 11:25:26 726

原创 Android批量加载图片OOM问题

将单个位图加载到界面中非常简单,但如果您需要同时加载较大的一组图片,则操作起来会比较复杂。实际上,在许多情况下(比如使用ListViewGridView或ViewPager等组件时),屏幕上的图片与可能很快会滚动到屏幕上的图片加起来,数量是无限的。系统通过循环利用移出屏幕的子视图来限制此类组件对内存的占用。垃圾回收器假设您不会保留任何长期的引用,因此也会释放已加载的位图。这些都没有问题,但是为了确保能够快速、流畅地加载界面,您必须避免每次这些图片返回到屏幕上时都要处理这些图片。

2024-02-20 10:08:22 1102

原创 Java中finally和return的执行顺序

中的内容一定是会被执行的,一般用来释放资源,并确保某些操作一定会执行。是一种针对程序运行时出错的响应手段,对于一些可以预料到的出错类型,在发生时对其进行报告和补救。这就是Java到底是传值还是传址的问题了,简单来说就是:Java中只有传值没有传址,这也是为什么。就变成不可到达语句了,也就是永远不能被执行到,所以需要注释掉否则编译器报错。后的语句中的内容是对应的错误类型。不会被执行到,而是接着执行捕获异常的。语句先执行,确定了返回值后再去执行。中的语句报错了,那么就转入对应的。语句中执行处理异常的措施,

2024-01-11 15:33:31 1082 1

原创 Android-高效加载大图

图片有各种形状和大小。在很多情况下,它们的大小超过了典型应用界面的要求。例如,系统“图库”应用会显示使用 Android 设备的相机拍摄的照片,这些照片的分辨率通常远高于设备的屏幕密度。但是手机中每个应用的内存是有限的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。理想情况下只希望在内存中加载较低分辨率的版本。分辨率较低的版本应与显示该版本的界面组件的大小相匹配。分辨率更高的图片不会带来任何明显的好处,但仍会占用宝贵的内存,并且会因为额外的动态缩放而产生额外的性能开销。

2023-12-18 15:09:27 881 1

原创 HashMap源码解析-jdk1.8(三)

*** 默认的负载因子,用来衡量HashMap满的程度。*/负载因子,用来衡量HashMap满的程度。通常,默认负载因子(0.75)在时间和空间成本之间提供了一个很好的权衡。负载因子越大则散列表的装填程度越高,减少空间开销,但会增加查找成本。负载因子越小则链表中的数据量就越稀疏,此时会对空间造成烂费,但是此时索引效率高。试想一下,如果我们把负载因子设置成1,容量使用默认初始值16,那么表示一个HashMap需要在"满了"之后才会进行扩容。

2023-11-29 17:53:56 983

原创 HashMap源码解析_jdk1.8(二)

从构造函数我们可以看出,在常规构造器中,没有为数组table分配内存空间(有一个入参为指定Map的构造器例外),而是在执行put操作的时候才真正构建table数组。如果用户通过构造函数指定了一个数字作为容量,那么Hash会选择。

2023-10-24 18:03:19 185 1

原创 HashMap源码解析_jdk1.8(一)

一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。2). 再平方探测: 冲突发生时,在表的左右进行跳跃式探测,在原来值的基础上先加1的平方个单位,若仍然存在则减1的平方个单位。在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为。

2023-09-25 14:07:10 119

原创 Java——HashMap和HashTable的区别

为了提高计算效率,将哈希表的大小固定为了2的幂,这样在取模预算时,不需要做除法,只需要做位运算。效率虽然提高了,但是。只做了一些简单的位处理。从而不至于把使用2的幂次方带来的效率提升给抵消掉。: 线程不安全,效率高。在多线程并发的环境下,可能会产生死循环,数据覆盖等问题。使得取得的位置更加分散,从而减少了。然而除法运算是非常耗费时间的,效率很低。值的低位相同的概率比较高,而计算位运算为了解决这个问题,的结构(增加,删除,修改元素),将会抛出。值来计算得到最终的位置。: 线程安全,效率低。

2023-08-29 16:35:12 154

原创 Android 截图功能实现

在Android应用中开发截图功能涉及到以下几个步骤:获取屏幕内容、处理截图、保存截图等。

2023-07-27 10:53:17 2306

原创 Android——快速设置Quick Settings Tile(创建自定义快速设置磁贴)

快速设置是显示在快速设置面板中的磁贴,表示操作,用户可以点击这些操作来快速完成重复出现的任务。你的应用可以通过TileService类为用户提供自定义的tile,并使用tile对象来跟踪tile的状态。例如,你可以创建一个标题,让用户打开或关闭应用程序提供的VPN。需要提供一个自定义图标,该图标显示在Quick Settings面板中的tile上(将在声明TileService时添加此图标)。图标必须是纯白色的透明背景,尺寸为24 x 24dp,并以的形式呈现。创建一个图标,在视觉上暗示你的标题的目的。

2023-06-28 17:45:04 1496

原创 Android播放器拖动进度条的小图预览

是Android原生提供的获取音视频文件信息的一个类,我们可以通过这个类的相关方法获取一些基本信息,如视频时长、宽高、帧率、方向、某一帧的图片等。进入界面时我们开启一个子线程,以1秒的时间间隔提前把视频中的图片截取好。拖动滑动条时,只需根据当前的位置,找到最近的已经提前截取好的某帧图片即可。实现了拖动进度条调节播放进度的功能,今天我们继续完善上一篇博客的功能,增加小图预览功能。为了减少内存占用,可以把截取的预览图的分辨率设置的小一些。调节进度过程中,不停的更新预览图信息,停止调节进度。

2023-05-31 15:21:17 1463

原创 Android SeekBar控制视频播放进度(二)——seekTo()不准确

上一篇文章中,我们介绍了使用SeekBar控制视频播放,使用过程中发现,对于一些视频,我们拖动SeekBar进度条调节播放进度时,调节到指定位置后,进度条会往回跳,并不会在我们拖动位置继续播放。网上搜索了解到,方法的策略决定的。具体看一下seekTo()

2023-04-26 11:48:06 1676 2

原创 Android SeekBar控制视频播放进度(一)

使用VideoView控件播放视频时,我们希望能够调节播放的进度,一种方法是使用自带的控制器进行控制,另一种方法是自己实现一个SeekBar控制。

2023-03-31 15:03:27 964

原创 Android Bluetooth(一)——蓝牙的开启和搜索

当设备完成配对后,系统会保存关于该设备的基本信息(例如设备的名称、类和 MAC 地址),并且可使用 Bluetooth API 读取这些信息。但是,这两台设备仍保持绑定状态,因此在未来的会话期间,只要二者在彼此的范围内且均未移除绑定,便可自动重新连接。用户可通过系统设置将设备设为在有限的时间内处于可检测到状态,或者,应用可请求用户在不离开应用的同时启用可检测性。设备发现是一个扫描过程,它会搜索局部区域内已启用蓝牙功能的设备,并请求与每台设备相关的某些信息。回调的调用,其结果代码等于设备可检测到的持续时间。

2023-02-23 19:11:52 6886 2

原创 Android 传感器概述(二)

大多数 Android 设备都有内置传感器,用来测量运动、屏幕方向和各种环境条件。这些传感器能够提供高度精确的原始数据,非常适合用来监测设备的三维移动或定位,或监测设备周围环境的变化。例如,游戏可以跟踪设备重力传感器的读数,以推断出复杂的用户手势和动作,如倾斜、摇晃、旋转或挥动。同样,天气应用可以使用设备的温度传感器和湿度传感器来计算和报告露点,旅行应用则可以使用地磁场传感器和加速度计来报告罗盘方位。

2023-01-31 20:24:31 1411

原创 Android 传感器概述(一)

大多数 Android 设备都有内置传感器,用来测量运动、屏幕方向和各种环境条件。这些传感器能够提供高度精确的原始数据,非常适合用来监测设备的三维移动或定位,或监测设备周围环境的变化。例如,游戏可以跟踪设备重力传感器的读数,以推断出复杂的用户手势和动作,如倾斜、摇晃、旋转或挥动。同样,天气应用可以使用设备的温度传感器和湿度传感器来计算和报告露点,旅行应用则可以使用地磁场传感器和加速度计来报告罗盘方位。Android 平台支持三大类传感器动态传感器这类传感器测量三个轴向上的加速力和旋转力。

2022-12-28 11:07:40 2445

原创 Android 创建桌面组件Widget——构建应用微件(二)

您可以将微件想象成“一目了然”的视图,它们让最重要的应用数据和功能一览无余,从用户的主屏幕即可进行访问。用户可以在其主屏幕面板间移动微件,如果系统支持,用户还可以调整微件的大小,按照他们的偏好量身定制微件中的信息量。在搭载 Android 8.0(API 级别 26)及更高版本的设备上,允许您创建固定的快捷方式的启动器也允许您将应用微件固定到启动器上。要创建预览图片,请启动此应用,为您的应用选择应用微件并设置您希望如何显示预览图片,然后将其保存并放在您的应用的可绘制资源中。的按钮,则可以使用以下。

2022-11-29 16:17:52 2309

原创 Android 创建桌面组件Widget——构建应用微件(一)

用户可以在其主屏幕面板间移动微件,如果系统支持,用户还可以调整微件的大小,按照他们的偏好量身定制微件中的信息量。定义应用微件的初始布局,在 XML 中定义。这是一个可选的 Activity,在用户添加您的应用微件时启动,并允许用户在应用微件创建时修改其设置。定义应用微件的基本特性,如应用微件的最小布局尺寸、应用微件的初始布局资源、应用微件的更新频率,以及(可选)在应用微件创建时启动的配置。与控制微件的互动不一定会转到关联的详情视图,具体取决于控制微件的功能是否生成了数据集(例如,在使用搜索微件时)。

2022-10-24 14:59:09 2819

原创 Android 11源码——驱动设备节点的权限问题

Android 11源码 驱动设备节点的权限问题

2022-09-29 15:00:58 2104

原创 Android 11源码——安全策略SELinux关闭

Android 11源码 安全策略SELinux关闭SELinux介绍背景关闭Android的SELinux临时关闭永久关闭SELinux介绍作为 Android 安全模型的一部分,Android 使用安全增强型 Linux (SELinux) 对所有进程强制执行强制访问控制 (MAC),甚至包括以 Root/超级用户权限运行的进程(Linux 功能)。借助 SELinux,Android 可以更好地保护和限制系统服务、控制对应用数据和系统日志的访问、降低恶意软件的影响,并保护用户免遭移动设备上的代码可

2022-08-23 17:06:24 3969

原创 Android 11源码——预置无源码apk到Android系统(带so文件)

模块名,可不用定义,默认=$(LOCAL_PACKAGE_NAME),不能和既有模块相同,如果该变量未设置,则使用LOCAL_PACKAGE_NAME,如果再没有,就会编译失败。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system,可以参见Settings。例如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES等等,但不清理LOCAL_PATH。testkey普通APK,默认情况下使用。...

2022-07-29 15:04:56 4705 3

原创 Android 深色模式适配

Android 深色模式适配Android 深色模式适配深色主题背景在应用中支持深色主题背景主题背景和样式Force Dark在视图上停用 Force DarkAndroid 10以上配置变更Android 深色模式适配深色主题背景Android 10 (API 级别 29) 及更高版本中提供深色主题背景。深色主题背景具有诸多优势:可大幅减少耗电量(具体取决于设备的屏幕技术)。为弱视以及对强光敏感的用户提高可视性。让所有人都可以在光线较暗的环境中更轻松地使用设备。深色主题背景同时适用于

2022-05-06 16:36:12 1708

原创 Android 11源码——预置无源码apk到Android系统

Android 11源码——预置无源码apk到Android系统在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为 Test 的APK为例。将 Test.apk 放到 packages/apps/Test 下面。在 packages/apps/Test 下面创建文件 Android.mk,文件内容如下:LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optional

2022-04-18 10:35:05 1292 2

原创 Java 二叉树后序遍历(递归/非递归)

Java 二叉树后序遍历(递归/非递归)

2022-03-31 18:52:50 2691 2

原创 Java 二叉树中序遍历(递归/非递归)

Java 二叉树中序遍历(递归/非递归)

2022-02-28 20:05:36 3966

原创 Android Studio JNI开发(三)——实现通过IIC协议控制硬件设备

Android Studio JNI开发(三)——实现通过IIC协议控制硬件设备新建Java JNI 类 MyJni.java,并编写JNI native方法。public class MyJNI { static { System.loadLibrary("jni_native"); } public static native String getStringFromNative(); public static native int Ope

2022-01-04 16:16:48 1798

原创 Android Studio JNI开发(二)——Java调用C方法输出字符串

Android Studio JNI开发(二)——Java调用C方法输出字符串新建Android项目在local.properties 文件配置ndk路径ndk.dir=D\:\\Android\\SDK\\ndk-bundleFile ----> Project Structure ----> SDK Lcation配置Android NDK location。gradle.properties文件配置兼容老的ndkandroid.useDeprec

2021-12-02 09:37:01 3303 1

原创 Android Studio JNI开发(一)——NDK安装及环境配置

Android Studio JNI开发(一)——NDK安装及环境配置简介JNIJNI(Java Native Interface),是Java和C/C++相互通信的接口,实现了一个工程,多种语言并存。在Android Framework中,需要提供一种媒介或桥梁,将Java层(上层)与C/C++层(下层)有机的联系起来,使得他们互相协调完成某些任务。而充当这种媒介的就是Java本地接口(JNI,Java Native Interface)。JNI提供一些列的接口,允许Java类与C/C++等本

2021-11-14 10:51:56 2291

原创 电脑重装系统以后,Android Studio出现Execution failed for task ‘:app:signingConfigWriterDebug‘问题

@TOC在电脑重装系统以后,出现Execution failed for task ':app:signingConfigWriterDebug’问题简介: 重装电脑系统后,安装最新版本Android Studio,打开之前的项目,运行时提示如下的错误:Execution failed for task ':MvcMvpMvvmDemo:signingConfigWriterDebug'.> java.nio.file.AccessDeniedException: D:\code\androi

2021-10-24 11:30:51 986

原创 Android 仿通话来电界面

Android 仿通话来电界面**简介:**开发中需要模拟来电时的通话界面,仿照来电界面实现来电时播放铃声,界面通过动画模拟来电动效。效果图:自定义图片背景,图片由小变大的动态效果。shap_circle.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android

2021-09-23 17:07:35 1274

原创 Android 创建自己的依赖库,上传到Gitee并发布到JitPack提供引用

Android 创建自己的依赖库,上传到Gitee并发布到JitPack提供引用说明很多项目中,使用到的通讯模块代码都一样,为了避免代码的过多CV操作,减少代码的臃肿;一个项目中修改,所有项目需要更新,容易忘记修改。为了方便该模块的修改更新,方便在不同项目中使用,,将不同工程中,相同的通讯模块单独做成一个库。使用如下两种方式引用:方式一:把整个module文件夹复制到工程的根目录;在工程的settings.gradle中增加对module的引用。  由include ‘:app’变成inc

2021-08-09 18:17:49 892

原创 Android 画中画(视频)

Android 画中画(视频)简介: Android 8.0(API 级别 26)允许以画中画 (PIP) 模式启动 Activity。画中画是一种特殊类型的多窗口模式,最常用于视频播放。使用该模式,用户可以通过固定到屏幕一角的小窗口观看视频,同时在应用之间进行导航或浏览主屏幕上的内容。画中画窗口会显示在屏幕的最上层,位于系统选择的一角。您可以将画中画窗口拖动到其他位置(会自动贴边)。当您点按该窗口时,会看到两个特殊的控件:全屏切换开关(位于窗口的中心)和关闭按钮(右上角的“X”)。效果图:声明

2021-07-30 17:25:28 1493 4

原创 Android 11源码 Framework修改默认usb连接模式为MTP模式

Android 11 Framework 修改默认usb连接模式为MTP模式 Android 11 Framework 修改默认usb连接模式为MTP模式修改Framework层源码编译修改后的源码更新到手机系统目标: 对Framework定制开发,修改Framework层代码,编译查看修改效果。本节我们修改USB默认选项,将USB默认充电模式改为默认MTP模式。效果图: 默认情况下USB选项为不进行数据传输:修改Framework层源码执行环境编译:cd ~/aospsource bu

2021-06-18 15:26:44 3582 7

json解析jar包

JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量,所以使用越来越广泛。

2018-01-16

解析xml文件

XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。资源中包含了Java解析XML的四种方法的jar包。

2018-01-16

java导出excel的相关jar

java导出数据到excel中的相关jar包。导出Excel的技术有两种Jakarta POI和Java Excel。

2018-01-16

文本编辑器

QuickEditor是一个体积小、重量轻、易于使用记事本,始终为您的意见做好准备。

2018-01-09

Shell 终端模拟工具

Android 平台上方便实用的 Shell 终端模拟工具,虽然是国外大神所开发,但其原生支持中文,功能强大,使用方便。

2017-11-20

Android内核剖析(完整版)

本书详细分析了Android内核的内部机制,包括窗口管理系统、Activity管理系统、输入法框架、编译系统等,为Android内核定制及高级应用程序开发提供技术参考。

2017-09-01

Android SDK 中文开发文档

Android SDK 中文开发文档

2017-08-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除