滑动速度切换画笔大小

2024-01-08 02:38

本文主要是介绍滑动速度切换画笔大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在做Note 应用的时候,有个需求是要橡皮擦的粗细随着pecil的移动速度来控制。


其实只要了解一个类就足够了:

VelocityTracker

贴出部分代码:

private VelocityTracker mTracker;@Overridepublic boolean onTouchEvent(MotionEvent event) {mEvent = 0;switch (event.getAction()) {case MotionEvent.ACTION_DOWN:LogUtils.d(TAG, ("touch down\n"));startUpdating();if (mTracker == null) {mTracker = VelocityTracker.obtain();} else {mTracker.clear();<pre name="code" class="java">    public void initPaint(int b, int w) {mPaint.setColor(b);mPaint.setStrokeWidth(w);}

} mTracker.addMovement(event); break; case MotionEvent.ACTION_MOVE: LogUtils.d(TAG, ("touch move\n")); mTracker.addMovement(event); mTracker.computeCurrentVelocity(1000); float abx = Math.abs(mTracker.getXVelocity()); float aby = Math.abs(mTracker.getYVelocity()); float abs = Math.max(abx, aby); // 0 - 12000 int a; // 0 - 40 if (CUR == MODE_CLEAR) { a = (int) (abs / 100); if (a < 5) a = 5; // min else if (a > 40) a = 50; // max initPaint(0x00FFFFFF, a); } break; case MotionEvent.ACTION_UP: LogUtils.d(TAG, ("touch up\n")); mUpdateFlag = false; break; case MotionEvent.ACTION_CANCEL: mTracker.recycle(); break; }

 

    public void initPaint(int b, int w) {mPaint.setColor(b);mPaint.setStrokeWidth(w);}


    public static final int MODE_CLEAR  = 0;public static final int MODE_NORMAL = 1;public              int CUR         = MODE_NORMAL;public void setPaint(int b, int w, boolean p) {this.flag = false;initPaint(b, w);if (p) {//erasemPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));CUR = MODE_CLEAR;} else {//paintmPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SCREEN));CUR = MODE_NORMAL;}}





这篇关于滑动速度切换画笔大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582067

相关文章

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

C#中图片如何自适应pictureBox大小

《C#中图片如何自适应pictureBox大小》文章描述了如何在C#中实现图片自适应pictureBox大小,并展示修改前后的效果,修改步骤包括两步,作者分享了个人经验,希望对大家有所帮助... 目录C#图片自适应pictureBox大小编程修改步骤总结C#图片自适应pictureBox大小上图中“z轴

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

Spring Boot实现多数据源连接和切换的解决方案

《SpringBoot实现多数据源连接和切换的解决方案》文章介绍了在SpringBoot中实现多数据源连接和切换的几种方案,并详细描述了一个使用AbstractRoutingDataSource的实... 目录前言一、多数据源配置与切换方案二、实现步骤总结前言在 Spring Boot 中实现多数据源连接

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

PDFQFZ高效定制:印章位置、大小随心所欲

前言 在科技编织的快节奏时代,我们不仅追求速度,更追求质量,让每一分努力都转化为生活的甜蜜果实——正是在这样的背景下,一款名为PDFQFZ-PDF的实用软件应运而生,它以其独特的功能和高效的处理能力,在PDF文档处理领域脱颖而出。 它的开发,源自于对现代办公效率提升的迫切需求。在数字化办公日益普及的今天,PDF作为一种跨平台、不易被篡改的文档格式,被广泛应用于合同签署、报告提交、证书打印等各个

专题二_滑动窗口_算法专题详细总结

目录 滑动窗口,引入: 滑动窗口,本质:就是同向双指针; 1.⻓度最⼩的⼦数组(medium) 1.解析:给我们一个数组nums,要我们找出最小子数组的和==target,首先想到的就是暴力解法 1)暴力: 2)优化,滑动窗口: 1.进窗口 2.出窗口 3.更新值 2.⽆重复字符的最⻓⼦串(medium) 1)仍然是暴力解法: 2)优化: 进窗口:hash[s[rig