- 博客(106)
- 资源 (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 37541 1
原创 Android 圆角按钮的实现
Android 圆角按钮的实现效果图:在res/drawable目录下新建按钮样式文件 btn_normal.xml(正常状态) 和 btn_pressed.xml(按下状态)。btn_normal.xml文件:<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schema...
2019-03-14 16:00:15 35765 1
原创 在线词云工具生成词云图——Wordart的使用
在线词云工具生成词云图——Wordart的使用前言:词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。WordArt简介: WordArt is an online word art creator that enables you to create amazing and
2018-01-09 16:50:33 133846 18
原创 Android 平台上方便实用的 Shell 终端模拟工具
Android 平台上方便实用的 Shell 终端模拟工具前言: 一直在苦苦寻找适用于 Android 平台上方便实用的 Shell 终端模拟工具。找到了安卓shell终端,但是使用起来不太方便。于是另外找了其他的工具,终于在Google Play上发现了它的踪影,虽然是国外大神所开发,但其原生支持中文,功能强大,使用方便。【应用介绍】 JuiceSSH 支持连接本机 Shell、Telnet 和
2017-11-20 10:47:44 32811
原创 Android自动朗读(TTS)的实现
Android自动朗读(TTS)的实现前言: Android提供了自动朗读支持。可以对指定文本内容进行朗读,从而发生声音;还允许把文本对应的音频录制成音频文件,方便以后播放。
2017-10-11 09:59:49 17090 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 29405 2
原创 Android源码——Handler机制(一)
Handler是Android消息机制的上层接口。Handler可以将一个任务切换到Handler所在的线程中去执行。通常情况下,Handler的使用场景就是更新UI。@Override@Override@Override// 耗时操作.....}).start();在子线程中,进行耗时操作,执行完操作后,发送消息,通知主线程更新UI。这便是消息机制的典型应用场景。我们通常只会接触到Handler和Message来完成消息机制,其实内部还有两大助手来共同完成消息传递。
2024-06-28 14:46:28 928 1
原创 Android 实现竖排文本(垂直方向显示)
在 Android 应用程序中显示垂直文本可以通过多种方法实现,具体取决于项目的复杂性和要求。以下介绍在 Android 中显示垂直文本的几种方法。init();init();init();= text &&!init();init();@Overridei++) {这些方法应该涵盖了 Android 中显示竖排文本的大部分场景。自定义视图方法提供了最大的灵活性,而旋转TextView是最简单、最快的方法。
2024-05-22 18:09:38 2098
原创 Android 在attrs.xml添加属性时出现 Found item Attr/****** more than one time
在Android应用开发过程中,经常需要自定义控件,并且定义控件的属性,方便灵活的修改控件的显示样式,提高代码的可重用性和拓展性。的问题,相对而言,更推荐方式二的解决办法。方式二可以提高同名属性的重复性和利用率。标签外面,内部只声明引用,这样不同控件就可以重复使用了。中的每个属性名称必须是唯一的。修改同名的属性,使不同控件的属性名不一样。文件定义控件的属性,编译工程时报错了。文件中有多个同名条目时,通常会出现。通过上述两种方式,我们都可以解决。,这样就保证了属性名的唯一。中有同名的属性(比如。
2024-04-28 10:53:56 1439 3
原创 Android 使用SQLite保存数据
对于重复数据或结构化数据(例如联系信息),将数据保存到数据库是理想选择。软件包中提供了在 Android 上使用数据库所需的 API。本篇文章介绍在 Android 上使用SQLite数据库。SQL 数据库的主要原则之一是架构,即数据库组织方式的正式声明。架构反映在你用于创建数据库的 SQL 语句中。您可能会发现创建伴随类(称为协定类)很有用,该类以系统化、自记录的方式明确指定了架构的布局。协定类是定义 URI、表和列名称的常量的容器。通过协定类,您可以在同一软件包的所有其他类中使用相同的常量。
2024-03-29 11:25:26 1316
原创 Android批量加载图片OOM问题
将单个位图加载到界面中非常简单,但如果您需要同时加载较大的一组图片,则操作起来会比较复杂。实际上,在许多情况下(比如使用ListViewGridView或ViewPager等组件时),屏幕上的图片与可能很快会滚动到屏幕上的图片加起来,数量是无限的。系统通过循环利用移出屏幕的子视图来限制此类组件对内存的占用。垃圾回收器假设您不会保留任何长期的引用,因此也会释放已加载的位图。这些都没有问题,但是为了确保能够快速、流畅地加载界面,您必须避免每次这些图片返回到屏幕上时都要处理这些图片。
2024-02-20 10:08:22 1164
原创 Java中finally和return的执行顺序
中的内容一定是会被执行的,一般用来释放资源,并确保某些操作一定会执行。是一种针对程序运行时出错的响应手段,对于一些可以预料到的出错类型,在发生时对其进行报告和补救。这就是Java到底是传值还是传址的问题了,简单来说就是:Java中只有传值没有传址,这也是为什么。就变成不可到达语句了,也就是永远不能被执行到,所以需要注释掉否则编译器报错。后的语句中的内容是对应的错误类型。不会被执行到,而是接着执行捕获异常的。语句先执行,确定了返回值后再去执行。中的语句报错了,那么就转入对应的。语句中执行处理异常的措施,
2024-01-11 15:33:31 2216 2
原创 Android-高效加载大图
图片有各种形状和大小。在很多情况下,它们的大小超过了典型应用界面的要求。例如,系统“图库”应用会显示使用 Android 设备的相机拍摄的照片,这些照片的分辨率通常远高于设备的屏幕密度。但是手机中每个应用的内存是有限的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。理想情况下只希望在内存中加载较低分辨率的版本。分辨率较低的版本应与显示该版本的界面组件的大小相匹配。分辨率更高的图片不会带来任何明显的好处,但仍会占用宝贵的内存,并且会因为额外的动态缩放而产生额外的性能开销。
2023-12-18 15:09:27 921 1
原创 HashMap源码解析-jdk1.8(三)
*** 默认的负载因子,用来衡量HashMap满的程度。*/负载因子,用来衡量HashMap满的程度。通常,默认负载因子(0.75)在时间和空间成本之间提供了一个很好的权衡。负载因子越大则散列表的装填程度越高,减少空间开销,但会增加查找成本。负载因子越小则链表中的数据量就越稀疏,此时会对空间造成烂费,但是此时索引效率高。试想一下,如果我们把负载因子设置成1,容量使用默认初始值16,那么表示一个HashMap需要在"满了"之后才会进行扩容。
2023-11-29 17:53:56 1027
原创 HashMap源码解析_jdk1.8(二)
从构造函数我们可以看出,在常规构造器中,没有为数组table分配内存空间(有一个入参为指定Map的构造器例外),而是在执行put操作的时候才真正构建table数组。如果用户通过构造函数指定了一个数字作为容量,那么Hash会选择。
2023-10-24 18:03:19 210 1
原创 HashMap源码解析_jdk1.8(一)
一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。2). 再平方探测: 冲突发生时,在表的左右进行跳跃式探测,在原来值的基础上先加1的平方个单位,若仍然存在则减1的平方个单位。在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为。
2023-09-25 14:07:10 145
原创 Java——HashMap和HashTable的区别
为了提高计算效率,将哈希表的大小固定为了2的幂,这样在取模预算时,不需要做除法,只需要做位运算。效率虽然提高了,但是。只做了一些简单的位处理。从而不至于把使用2的幂次方带来的效率提升给抵消掉。: 线程不安全,效率高。在多线程并发的环境下,可能会产生死循环,数据覆盖等问题。使得取得的位置更加分散,从而减少了。然而除法运算是非常耗费时间的,效率很低。值的低位相同的概率比较高,而计算位运算为了解决这个问题,的结构(增加,删除,修改元素),将会抛出。值来计算得到最终的位置。: 线程安全,效率低。
2023-08-29 16:35:12 181
原创 Android——快速设置Quick Settings Tile(创建自定义快速设置磁贴)
快速设置是显示在快速设置面板中的磁贴,表示操作,用户可以点击这些操作来快速完成重复出现的任务。你的应用可以通过TileService类为用户提供自定义的tile,并使用tile对象来跟踪tile的状态。例如,你可以创建一个标题,让用户打开或关闭应用程序提供的VPN。需要提供一个自定义图标,该图标显示在Quick Settings面板中的tile上(将在声明TileService时添加此图标)。图标必须是纯白色的透明背景,尺寸为24 x 24dp,并以的形式呈现。创建一个图标,在视觉上暗示你的标题的目的。
2023-06-28 17:45:04 2943
原创 Android播放器拖动进度条的小图预览
是Android原生提供的获取音视频文件信息的一个类,我们可以通过这个类的相关方法获取一些基本信息,如视频时长、宽高、帧率、方向、某一帧的图片等。进入界面时我们开启一个子线程,以1秒的时间间隔提前把视频中的图片截取好。拖动滑动条时,只需根据当前的位置,找到最近的已经提前截取好的某帧图片即可。实现了拖动进度条调节播放进度的功能,今天我们继续完善上一篇博客的功能,增加小图预览功能。为了减少内存占用,可以把截取的预览图的分辨率设置的小一些。调节进度过程中,不停的更新预览图信息,停止调节进度。
2023-05-31 15:21:17 1886
原创 Android SeekBar控制视频播放进度(二)——seekTo()不准确
上一篇文章中,我们介绍了使用SeekBar控制视频播放,使用过程中发现,对于一些视频,我们拖动SeekBar进度条调节播放进度时,调节到指定位置后,进度条会往回跳,并不会在我们拖动位置继续播放。网上搜索了解到,方法的策略决定的。具体看一下seekTo()
2023-04-26 11:48:06 2487 2
原创 Android SeekBar控制视频播放进度(一)
使用VideoView控件播放视频时,我们希望能够调节播放的进度,一种方法是使用自带的控制器进行控制,另一种方法是自己实现一个SeekBar控制。
2023-03-31 15:03:27 1337
原创 Android Bluetooth(一)——蓝牙的开启和搜索
当设备完成配对后,系统会保存关于该设备的基本信息(例如设备的名称、类和 MAC 地址),并且可使用 Bluetooth API 读取这些信息。但是,这两台设备仍保持绑定状态,因此在未来的会话期间,只要二者在彼此的范围内且均未移除绑定,便可自动重新连接。用户可通过系统设置将设备设为在有限的时间内处于可检测到状态,或者,应用可请求用户在不离开应用的同时启用可检测性。设备发现是一个扫描过程,它会搜索局部区域内已启用蓝牙功能的设备,并请求与每台设备相关的某些信息。回调的调用,其结果代码等于设备可检测到的持续时间。
2023-02-23 19:11:52 8116 2
原创 Android 传感器概述(二)
大多数 Android 设备都有内置传感器,用来测量运动、屏幕方向和各种环境条件。这些传感器能够提供高度精确的原始数据,非常适合用来监测设备的三维移动或定位,或监测设备周围环境的变化。例如,游戏可以跟踪设备重力传感器的读数,以推断出复杂的用户手势和动作,如倾斜、摇晃、旋转或挥动。同样,天气应用可以使用设备的温度传感器和湿度传感器来计算和报告露点,旅行应用则可以使用地磁场传感器和加速度计来报告罗盘方位。
2023-01-31 20:24:31 1712
原创 Android 传感器概述(一)
大多数 Android 设备都有内置传感器,用来测量运动、屏幕方向和各种环境条件。这些传感器能够提供高度精确的原始数据,非常适合用来监测设备的三维移动或定位,或监测设备周围环境的变化。例如,游戏可以跟踪设备重力传感器的读数,以推断出复杂的用户手势和动作,如倾斜、摇晃、旋转或挥动。同样,天气应用可以使用设备的温度传感器和湿度传感器来计算和报告露点,旅行应用则可以使用地磁场传感器和加速度计来报告罗盘方位。Android 平台支持三大类传感器动态传感器这类传感器测量三个轴向上的加速力和旋转力。
2022-12-28 11:07:40 2688
原创 Android 创建桌面组件Widget——构建应用微件(二)
您可以将微件想象成“一目了然”的视图,它们让最重要的应用数据和功能一览无余,从用户的主屏幕即可进行访问。用户可以在其主屏幕面板间移动微件,如果系统支持,用户还可以调整微件的大小,按照他们的偏好量身定制微件中的信息量。在搭载 Android 8.0(API 级别 26)及更高版本的设备上,允许您创建固定的快捷方式的启动器也允许您将应用微件固定到启动器上。要创建预览图片,请启动此应用,为您的应用选择应用微件并设置您希望如何显示预览图片,然后将其保存并放在您的应用的可绘制资源中。的按钮,则可以使用以下。
2022-11-29 16:17:52 2648
原创 Android 创建桌面组件Widget——构建应用微件(一)
用户可以在其主屏幕面板间移动微件,如果系统支持,用户还可以调整微件的大小,按照他们的偏好量身定制微件中的信息量。定义应用微件的初始布局,在 XML 中定义。这是一个可选的 Activity,在用户添加您的应用微件时启动,并允许用户在应用微件创建时修改其设置。定义应用微件的基本特性,如应用微件的最小布局尺寸、应用微件的初始布局资源、应用微件的更新频率,以及(可选)在应用微件创建时启动的配置。与控制微件的互动不一定会转到关联的详情视图,具体取决于控制微件的功能是否生成了数据集(例如,在使用搜索微件时)。
2022-10-24 14:59:09 3175
原创 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 4650
原创 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 5331 3
原创 Android 深色模式适配
Android 深色模式适配Android 深色模式适配深色主题背景在应用中支持深色主题背景主题背景和样式Force Dark在视图上停用 Force DarkAndroid 10以上配置变更Android 深色模式适配深色主题背景Android 10 (API 级别 29) 及更高版本中提供深色主题背景。深色主题背景具有诸多优势:可大幅减少耗电量(具体取决于设备的屏幕技术)。为弱视以及对强光敏感的用户提高可视性。让所有人都可以在光线较暗的环境中更轻松地使用设备。深色主题背景同时适用于
2022-05-06 16:36:12 1805
原创 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 1572 2
原创 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 1922
原创 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 3368 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 2385
原创 电脑重装系统以后,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 1090
原创 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 1475 1
Android内核剖析(完整版)
2017-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人