Android

Android利用Canvas类绘制图形

2022-09-19
本文实例为大家分享了Android利用Canvas类绘制图形的具体代码,供大家参考,具体内容如下 首先介绍一下相关基础知识. 1.画笔(paint) 1.1.作用:画笔对象通过属性来设置笔的颜色.粗细.风格等. 1.2.设置图形绘制属性相关方法: setARGB():设置画笔的颜色:setAlpha():设置绘制图形的透明度:setStyle():设置画笔的样式风格:setStrockWidth():设置画笔的宽度: 1.3.设置文本绘制属性的相关方法: setTextSize():设置字体的大

Android学习笔记之蓝牙功能

2022-09-18
本文实例为大家分享了Android学习笔记之蓝牙功能的具体代码,供大家参考,具体内容如下 蓝牙:短距离无线通讯技术标准.蓝牙协议分为4层,即核心协议层.电缆替代协议层.电话控制协议层和其他协议层.其中核心协议层包括基带.链路管理.逻辑链路控制和适应协议四部分.链路管理(LMP)负责蓝牙组件间的建立.逻辑链路控制与适应协议(L2CAP)位于基带协议层上,属于数据链路层,是一个高层传输和应用层协议屏蔽基带协议的适配协议. 1).第一种打开蓝牙的方式: Intent enableIntent = ne

Flutter 异步编程之单线程下异步模型图文示例详解

2022-09-17
目录 一. 本专栏图示概念规范 1. 任务概念规范 2. 任务的状态 3. 时刻与时间线 4.同步与异步 二.理解单线程中的异步任务 1. 任务的分配 2.异步任务特点 3. 异步任务完成与回调 三. Dart 语言中的异步 1.编程语言中与异步模型的对应关系 2.Dart 编程中的异步任务 3.当前任务分析 四.异步模型的延伸 1. 单线程异步模型的局限性 2. 多线程与异步的关系 3. Dart 中如何解决单线程异步模型的局限性 一. 本专栏图示概念规范 本专栏是对 异步编程 的系统探索,会

ASM的tree api对匿名线程的hook操作详解

2022-09-17
目录 背景 ASM介绍 class文件 fields methods InsnList Signature 实战部分 解决“匿名”Thread 最后 背景 看完本章,你将会学习到用ASM的tree api进行对匿名线程的hook操作,同时也能够了解到asm相关的操作和背景知识介绍!对于ASM插桩来说,可能很多人都不陌生了,但是大多数可能都停留在core api上,对于现在市面上的一些插桩库,其实很多都用tree api进行编写了,因为tree api的简单与明了的特性,也越来越成为许多开源库的选

Android性能优化之plt hook与native线程监控详解

2022-09-15
目录 背景 native 线程创建 PLT PLT Hook xhook bhook plt hook总结 背景 我们在android超级优化-线程监控与线程统一可以知道,我们能够通过asm插桩的方式,进行了线程的监控与线程的统一,通过一系列的黑科技,我们能够将项目中的线程控制在一个非常可观的水平,但是这个只局限在java层线程的控制,如果我们项目中存在着native库,或者存在着很多其他so库,那么native层的线程我们就没办法通过ASM或者其他字节码手段去监控了,但是并不是就没有办法,还有

从零开始使用gradle配置即可执行的Hook库详解

2022-09-15
目录 背景 本文须知 当前技术背景 底层选择 目标流程图 Transform ASM 封装开始 目标 实现 gradle 定义extension Transform阶段收集信息: 自定义的classvisitor 自定义method visitor 自定义hook操作 总结 背景 有一天,老板突然找到小B说,隐私合规需要我们获取权限前,需要明确授权来意,这个你来跟一下吧!小B此时就可愁了,因为项目权限那么多,每个自己手动加上授权来意提示的话,可能会漏掉很多,工作量也大,这可咋办呀!老B看到小B这

Android性能优化之线程监控与线程统一详解

2022-09-15
目录 背景 常规解决方案 线程监控 当前线程统计 线程信息具体化 线程统一 Thread创建 注意 总结 背景 在我们日常开发中,多线程管理一直是非常头疼的问题之一,尤其在历史性长,结构复杂的app中,线程数会达到好几百个甚至更多,然而过多的线程不仅仅带来了内存上的消耗同时也降低了cpu调度的效率,过多的cpu调度带来的消耗的坏处甚至超过了多线程带来的好处. 在我们日常开发中,通常会遇到以下几个问题 某个场景会创造过多的线程,最终导致oom 线程池过多问题,比如三方库有一套线程池,自己项目也有一

Android 菜单栏DIY实现效果详解

2022-09-13
目录 前言 实现的效果和思路 1. 绘制底部布局 2. 添加子view 3. 处理事件分发 4. 做个动画 5. 小结 前言 个人打算开发个视频编辑的APP,然后把一些用上的技术总结一下,这次主要是APP的底部菜单栏用到了一个自定义View去绘制实现的,所以这次主要想讲讲自定义View的一些用到的点和自己如何去DIY一个不一样的自定义布局. 实现的效果和思路 可以先看看实现的效果 两个页面的内容还没做,当前就是一个Demo,可以看到底部的菜单栏是一个绘制出来的不规则的一个布局,那要如何实现呢.可

Flutter实现一个支持渐变背景的Button示例详解

2022-09-12
目录 Flutter中的按钮 不完美的地方 在child中处理 外面套一个wrapper MaterialStateProperty MaterialStatesController 边距问题 EnhancedButton Flutter中的按钮 自Flutter 1.20 新增了ButtonStyleButton 系列按钮,可以说非常好用了,默认样式比之前漂亮了许多,扩展性也增加了很多.按钮样式统一由ButtonStyle这个类提供,支持根据各种状态(MaterialState)变化的属性,也

Android View转换为Bitmap实现应用内截屏功能

2022-09-12
目录 前言 一.getDrawingCache 二.黑屏问题 三.源码分析 四.View转Canvas转Bitmap 前言 安卓设备一般都自带截图功能,但是用户体验有不好之处.就是会连带着状态栏..时间日期.其他不必要页面中信息,等等与用户想截屏的内容不符的信息也会被保存下来.通常,截图后用户会再次裁剪一次才能想把真正需求分享出去. 因此,咱们技术研发会遇到针对性的会做一些应用内的截屏功能. 一.getDrawingCache getDrawingCache()是其中一种截图手段,使用方便,主要

Android自定义定时闹钟开发

2022-09-11
本文实例为大家分享了Android开发之自定义闹钟实现,供大家参考,具体内容如下 闹钟时间设置及显示 闹钟的布局很简单,就是一个简单时间设置,所以自己写一个简单的布局按钮之类的也可以了,不过多赘述.另外使用时间对话框TimePickerDialog 去设置时间,用Calendar可获取当前系统的时间.AlertDialog.THEME_HOLO_LIGHT是设置dialog的样式,不设置的话就是一个默认的圆形时钟,设置这个之后是一个可滚动上下滑动的时钟样式.代码展示: //设置时间事件的点击 C

Android实现秒表功能

2022-09-10
本文实例为大家分享了Android实现秒表功能的具体代码,供大家参考,具体内容如下 设计完成一个秒表,具备启停功能,正确使用工作线程完成界面刷新 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app

Android实现简易的闹钟功能

2022-09-10
本文实例为大家分享了Android实现简易的闹钟功能的具体代码,供大家参考,具体内容如下 主要是通过广播,实现一个闹钟的简易功能. 实现效果如下: 主界面为一个简易的设置闹钟Button,点击“设置闹钟”弹出时间设置窗.设置成功后,会自动弹出弹窗,提示“时间到了”. 打开Android Studio,选择File>New>New Project,选择Phone and Tablet设备下的Empty Activity,创建项目名称为“DrinkRemind”,并点击“Finish”,完成项目创

Android简单实现天气预报App

2022-09-10
本文实例为大家分享了Android简单实现天气预报App的具体代码,供大家参考,具体内容如下 一.UI设计 首页UI <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmln

Android实现简易秒表功能

2022-09-10
本文实例为大家分享了Android实现秒表功能的具体代码,供大家参考,具体内容如下 今天为了给师弟们讲安卓,花了10分钟写了一个简易的秒表app,现贴出代码,供各位刚入门以及还未入门的同学们参考 第一步:布局activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android

Android自定义View实现时钟功能

2022-09-10
最近在练习自定义view, 想起之前面试的时候笔试有道题是写出自定义一个时钟的关键代码. 今天就来实现一下. 步骤依然是先分析, 再上代码. 实现效果 View分析 时钟主要分为五个部分: 1.中心点: 圆心位置2.圆盘: 以中心点为圆心,drawCircle画个圆3.刻度: paint有个aip, setPathEffect可以根据path画特效, 那么刻度就可以根据圆的path画一个矩形path的特效, 并且这个api只会画特效, 不会画出圆. /** * shape: 特效的path, 这

Android开发实战闹钟项目

2022-09-09
本文实例为大家分享了Android实战闹钟项目的具体代码,供大家参考,具体内容如下 一.闹钟功能的介绍以及界面的展示 该闹钟是根据我们手机闹钟设计的一个简单的闹钟APP,其中包含时钟.闹钟.秒表和计时器功能.用户可以对闹钟添加和删除,可以对秒表计时.暂停和重置,对计时器可以暂停.计时.继续和重置等功能. 二.介绍系统的设计界面 闹钟的布局文件代码如下由于该闹钟系统包含时钟.闹钟.计时器.秒表四个功能,所以只要在xml文件插入TabHost控件就能实现在手机上更加简洁地展示四个功能.后面只需要在T

详解flutter中常用的container&nbsp;layout实例

2022-09-09
目录 简介 Container的使用 旋转Container Container中的BoxConstraints 总结 简介 在上一篇文章中,我们列举了flutter中的所有layout类,并且详细介绍了两个非常常用的layout:Row和Column. 掌握了上面两个基本的layout还是不够的,如果需要应付日常的layout使用,我们还需要掌握多一些layout组件.今天我们会介绍一个功能强大的layout:Container layout. Container的使用 Container是一

Android实现APP秒表功能

2022-09-09
本文实例为大家分享了Android实现APP秒表功能的具体代码,供大家参考,具体内容如下 这几天一直在看安卓,也正好赶上老师布置的作业,所以就做了一个秒表.自己参考了一下别人的图标,有了一些灵感所以顺便也设计了一下界面.下面先贴一下秒表的界面: 打开秒表后的第一个界面 点击开始计时,开始键变为暂停,记录和停止开始变实: 点击记录: 记录满了之后自动上移,通过滑动可以查看前面的: 点击暂停: 停止: 重新开始和记录: 双击返回键退出: 下面贴出Activity的代码: package com.ex

Kotlin协程的启动方式介绍

2022-09-07
目录 1.GlobalScope.launch 2.runBlocking 启动协程 3.async启动协程 启动协程的基本方式 1.GlobalScope.launch 代码示例: fun testGlobalScope() { GlobalScope.launch { println("Coroutinue started!") delay(1000L) println("Hello World!") } println("After launch!&