Android

Flutter悬浮按钮FloatingActionButton使用详解

2021-07-09
目录 1.普通用法 2.修改悬浮按钮位置 3.修改悬浮按钮大小 4.去除悬浮按钮切换动画 5.一般的自定义悬浮按钮样式 6.彻底的自定义悬浮按钮样式 1.普通用法 floatingActionButton: FloatingActionButton( child: Icon(Icons.add), onPressed: (){ print('不要啊~'); }, ), 2.修改悬浮按钮位置 继承FloatingActionButtonLocation类,重写对应方法自定义位置 import 'p

Android自定义View之简约风歌词控件实战指南

2021-07-09
目录 前言 一. 歌词解析 1.歌词实体类LrcBean 2. 解析歌词工具类LrcUtil 二.歌词绘制 1.设置自定View属性,在代码中设置默认值 2. 初始化两支画笔 3. 重复执行onDraw方法 1.获得控件的测量后的宽高 2. 得到当前歌词的位置 4. 歌词同步滑动 5.不断重绘 三 .使用 总结 前言 最近重构了之前的音乐播放器,添加了许多功能,比如歌词,下载功能等.这篇文章就让我们聊聊歌词控件的实现,先上效果图,如果感觉海星,就继续瞧下去! 看到这里,估计你对这个控件还有点感兴

Flutter禁止手机横屏的简单实现方法

2021-07-09
在一些特定的 App 里,我们不希望手机横屏的时候,App 发生旋转,比如微信,企业微信都是这样的. 代码可以这样设定: import 'package:flutter/services.dart'; void main() async => { WidgetsFlutterBinding.ensureInitialized(); await SystemChrome.setPreferredOrientations( [ DeviceOrientation.portraitUp, // 竖屏

Android实现图片文字识别

2021-07-08
导言 OCR,tess-two ,openCV等晕人的东西先分清,OCR,tess-two是图片文字识别,而openCV是图像识别比对,对于更复杂的图片文字识别需求可以采用百度云人工智能通用文字识别开发的SDK,准确性更高 可运行的步骤 1.添加依赖 implementation 'com.rmtheis:tess-two:8.0.0' 2.下载字体识别库(chi_sim.traineddata 中文简体,chi_tra.traineddata 中文繁体,eng.traineddata 英文库)

Kotlin协程到底是如何切换线程的

2021-07-08
随着kotlin在Android开发领域越来越火,协程在各个项目中的应用也逐渐变得广泛 但是协程到底是什么呢? 协程其实是个古老的概念,已经非常成熟了,但大家对它的概念一直存在各种疑问,众说纷纷 有人说协程是轻量级的线程,也有人说kotlin协程其实本质是一套线程切换方案 显然这对初学者不太友好,当不清楚一个东西是什么的时候,就很难进入为什么和怎么办的阶段了 本文主要就是回答这个问题,主要包括以下内容 1.关于协程的一些前置知识 2.协程到底是什么? 3.kotlin协程的一些基本概念,挂起函数

Android自定义Gradle插件的详细过程

2021-07-07
一.Gradle 我们知道在我们现在使用Android Stduio开发Android项目的时候,Android Studio是基于Gradle来帮助我们构建,管理项目的. Gradle:Gradle是一个项目构建工具,用来帮助我们管理项目的依赖.打包.发布.部署等工作. Gradle是通过如build.gradle这种gradle脚本来进行项目构建的,所以我们对项目的构建配置都是可以写在gradle构建脚本中. gradle构建脚本使用的是Groovy语言,Groovy语言也是一种jvm语言,

Kotlin线程同步的几种实现方法

2021-07-07
目录 1. Thread.join() 2. Synchronized 3. ReentrantLock 4. BlockingQueue 5. CountDownLatch 6. CyclicBarrier 7. CAS 8. Future 9. CompletableFuture 10. RxJava 11. Coroutine 12. Flow 总结 面试的时候经常会被问及多线程同步的问题,例如: " 现有 Task1.Task2 等多个并行任务,如何等待全部执行完成后,执行 Task3.

Android源码使用16进制进行状态管理的方法

2021-07-06
前言 在Android源码中,对于"多状态"的管理总是通过16进制数字来表示,类似这种格式: //ViewGroup.java protected int mGroupFlags; static final int FLAG_CLIP_CHILDREN = 0x1; private static final int FLAG_CLIP_TO_PADDING = 0x2; static final int FLAG_INVALIDATE_REQUIRED = 0x4; private s

详解Android中AIDL的使用

2021-07-05
AIDL,即Android Interface Definition Language,Android接口定义语言.这门语言是为了实现进程间通信.每一个进程都有自己的一块独立的内存,都在自己的内存上存储自己的数据,执行自己的操作,每个进程之间你不知我,我不知你,而AIDL,就是两个进程之间沟通的桥梁. AIDL用来做什么 AIDL是Android中IPC(Inter-Process Communication)方式中的一种,AIDL是Android Interface definition la

Android EditText输入框实现下拉且保存最近5个历史记录思路详解

2021-07-04
文章结构: 后面又添加了清空历史记录的标签,就是在每一次添加更新后台数组后,数组的下一个标签为清空历史记录. s_btnDown.setOnClickListener(this); //对其进行焦点监听 case R.id.btnDown: showListPopulWindow(); //调用显示PopuWindow 函数 break; 点击后触发PopuWindow函数,也就是将其下拉框,绑定到TextBox标签的下面. private void showListPopulWindow()

Android 自定义图片地图坐标功能的实现

2021-07-02
一.前言 最近项目要求实现一个在自定义地图图片上添加坐标信息的功能,类似于在图片做标注的功能.如下图所示.坐标的位置是相对于图片宽高的百分比 二.思路 改功能主要分为三个视图,1.继承FrameLayout作为父容器:2.添加一个铺满父布局的ImageView显示地图图片:3.动态添加自定义坐标视图 三.代码实现 1. 自定义坐标视图 <?xml version="1.0" encoding="utf-8"?> <androidx.constrai

Android实现跑马灯效果的两种简单方式

2021-07-01
第一种:较简单,但是局限性强,貌似只能从右至左跑,且有一个要求:字体的长度需大于控件的长度, 不然没有效果,重要的代码为深色部分,具体代码在文章最后. 重要代码的介绍 1. android:ellipsize="marquee" 设置为跑马灯的显示方式 2. android:focusable="true" 获得焦点 3. android:focusableInTouchMode="true" 可以通过触动来获取焦点 4. android:mar

Android利用zxing生成二维码的过程记录

2021-06-30
目录 二维码生成原理(即工作原理) 效果图如下: 前提: 源码如下: 总结 二维码生成原理(即工作原理) 二维码官方叫版本Version.Version 1是21 x 21的矩阵,Version 2是 25 x 25的矩阵,Version 3是29的尺寸,每增加一个version,就会增加4的尺寸,公式是:(V-1)*4 + 21(V是版本号) 最高Version 40,(40-1)*4+21 = 177,所以最高是177 x 177 的正方形. 下面是一个二维码的样例: 效果图如下: 前提:

Android中常见的图形绘制方式总结

2021-06-30
目录 图形绘制概述 View + Canvas SurfaceView + Canvas TextureView + Canvas SurfaceView + OpenGL ES GLSurfaceView + OpenGL ES TextureView + OpenGL ES 总结 图形绘制概述 Android平台提供丰富的官方控件给开发者实现界面UI开发,但在实际业务中经常会遇到各种各样的定制化需求,这必须由开发者通过自绘控件的方式来实现.通常Android提供了Canvas和OpenGL

一分钟快速定位Android启动耗时问题

2021-06-30
目录 前言 1. 接入Tencent Matrix 2. 改造Application子类 3.运行,快速定位 总结 前言 Tencent Matrix默认无法监测Application冷启动的耗时方法,本文介绍了如何改造Matrix支持冷启动耗时方法监测.让你一分钟就能给App启动卡顿号脉. 1. 接入Tencent Matrix 1.1 在你项目根目录下的 gradle.properties 中配置要依赖的 Matrix 版本号,如: MATRIX_VERSION=1.0.0 1.2 在你项目

Android ListView仿微信聊天界面

2021-06-28
Android ListView仿聊天界面效果图的具体代码,供大家参考,具体内容如下 1.首先页面总布局(ListView + LinearLayout(TextView+Button)) <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="

分析Android常见的内存泄露和解决方案

2021-06-28
目录 一.前言 二.Android 内存泄露场景 2.1.非静态内部类的静态实例 2.2.多线程相关的匿名内部类/非静态内部类 2.3.Handler 内存泄露 2.4.静态 Activity 或 View 2.5.Eventbus 等注册监听造成的内存泄露 2.6.单例引起的内存泄露 2.7.资源对象没关闭造成内存泄漏 2.8.WebView 一.前言 目前 java 垃圾回收主流算法是虚拟机采用 GC Roots Tracing 算法.算法的基本思路是:通过一系列的名为 GC Roots (

Android activity实现延时跳转功能

2021-06-28
什么是Activity Activity是一个Android的应用组件,它提供屏幕进行交互.每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满哦屏幕也可以小于屏幕并浮动在其他窗口之上. 一个应用通常是由多个彼此松散联系的Activity组成,一般会指定应用中的某个Activity为主活动,也就是说首次启动应用时给用户呈现的Activity.将Activity设为主活动的方法,如下面代码所示需要在AndroidManifest文件中添加以下内容 <application> .

如何通过Battery Historian分析Android APP耗电情况

2021-06-28
一.电量统计模块概述 耗电信息在设置 -> 电量中能够非常直观的看到.注意,Android 所有功耗统计都是通过代码估算,没有集成电路参与汇报.准确度取决于厂商 ROM 所提供的power_profile.xml文件.由于不同厂商power_profile.xml准确度及源码有差异,因此不同手机.不同版本的数据可能有较大差异. power_profile.xml直接影响统计的准确度,并且此文件无法通过应用修改.再次强调,Android 耗电估算没有硬件的参与,全靠代码估算. power_prof

详解Android ContentProvider的基本原理和使用

2021-06-27
一.前言 Android 的数据存储方式总共有五种,分别是:Shared Preferences.网络存储.文件存储.外储存储.SQLite.但一般这些存储都只是在单独的一个应用程序之中达到一个数据的共享,有时候我们需要操作其他应用程序的一些数据,就会用到 ContentProvider.而且 Android 为常见的一些数据提供了默认的 ContentProvider(包括音频.视频.图片和通讯录等). 要实现与其他的 ContentProvider 通信首先要查找到对应的 ContentPr