android裁剪控件,Android 仿抖音音频裁剪控件

article/2025/5/8 22:59:50

效果图

1c36045baa89

QQ图片20201126164657.jpg

功能要求:绘制音频效果,音乐播放后进度滚动,控件可拖动,拖动后获取新的起始时间

(后期会加入根据音乐各个时段分贝大小来动态显示音律线的长短)

控件功能实现具体代码:

package com.cj.customwidget.widget

import android.content.Context

import android.graphics.*

import android.media.MediaMetadataRetriever

import android.os.Handler

import android.util.AttributeSet

import android.util.Log

import android.view.MotionEvent

import android.view.VelocityTracker

import android.view.View

import android.view.ViewConfiguration

import android.widget.Scroller

import com.cj.customwidget.R

import com.cj.customwidget.p

import java.lang.Exception

import kotlin.math.abs

import kotlin.math.floor

/**

* @package com.cj.customwidget.widget

* @author luan

* @date 2020/11/16

* @des 音频裁剪控件

*/

class MusicCropView : View {

constructor(context: Context) : super(context) {

initView(context, null)

}

constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {

initView(context, attrs)

}

constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(

context,

attrs,

defStyleAttr

) {

initView(context, attrs)

}

private val screenTime = 15_000L//一屏所占的时长

private val groupLineCount = 5//每组音符线的数量

private val screenLineGroupCount = 7//一屏音符组数量

private var lineW = 10//音符线宽度

private var minLineH = 50//音符线最短长度

// private val maxLineH = 100//音符线最大长度

private var lineHDiff = 0//音符高度差值

private var lineWDiff = 0f//音符之间宽度间距

private var lineColor = Color.WHITE

private var lineProgressColor = Color.WHITE

private var musicTotalLength = 0L//音频总长度

private var startProgress = 0L//音频起始播放位置

private var currentProgress = 0L//当前音频播放进度

private val musicLines = ArrayList()

private val layoutRect = Rect()

private val scroller by lazy { Scroller(context, null, false) }

private val maxVolatile by lazy { ViewConfiguration.get(context).scaledMaximumFlingVelocity }

private val minVolatile by lazy { ViewConfiguration.get(context).scaledMinimumFlingVelocity }

var onStartProgressChange: ((Long) -> Unit)? = null

private val paint = Paint().apply {

isAntiAlias = true

style = Paint.Style.FILL_AND_STROKE

}

private fun initView(con


http://chatgpt.dhexx.cn/article/SwAX40au.shtml

相关文章

如何剪切音乐的一部分?来试试这个方法

音频剪切和合并是音频编辑中常见的操作,它可以用来去除不必要的部分或者将多个音频片段组合成一个完整的作品。在今天的数字化时代,有许多软件和工具可以帮助我们完成这个任务。 那你们知道具体的音频剪切合并的方法是什么吗?如果还不太清楚…

如何裁剪音频文件?裁剪音频的方法有什么?

通常我们在剪辑视频时,为了让视频更加有感染力,我们会加上各种各样的音频丰富视频的内容,而且在选取音频时,一般都是会采用它的高潮部分。那么如何裁剪音频文件来达到想要的效果呢?裁剪音频的方法又有什么?…

常用停用词表整理(哈工大停用词表,百度停用词表等)

辣鸡CSDN https://github.com/goto456/stopwords https://zhuanlan.zhihu.com/p/30002654 转载于:https://www.cnblogs.com/0n-the-way/p/10544285.html

文本分析--停用词集合(结合哈工大停用词表、四川大学机器智能实验室停用词库、百度停用词表等)

文本分析过程中,中文文本分析是一个非常重要的环节,而停用词表的选择也是非常关键的,网络流行了多种版本的停用词表,都具有各自的特点,现在对网络流行的多种停用词表继续去重处理,综合实现新的停用词表。 …

【python】构建停用词表(文末附链接)

构建停用词表 构建停用词表是数据预处理的必要步骤,可以减小不必要的开销。 哈工大、百度、川大等停用词表见GitHub链接:https://github.com/goto456/stopwords 经实验和观察证明,’cn_stopwords.txt‘文件的停用词大多是否定词&#xff1…

stopwords.txt中英文数据集,四川大学机器智能实验室停用词库,哈工大停用词表,中文停用词表,百度停用词表百度网盘下载

今天找stopwords.txt数据集找了好长时间,真是气死了,好多都是需要金币,这数据集不是应该共享的么。故搜集了一些数据集,主要包括四川大学机器智能实验室停用词库,哈工大停用词表,中文停用词表,百度停用词表和一些其他的stopword.t…

python停用词表整理_python停用词表

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! stop_words:设置停用词表,这样的词我们就不会统计出来(多半是虚拟词,冠词等等),需要列表结构,所以代码中定义了一个函数来处理停用词表...前言前文给大家…

python文本分析--停用词表的使用

之前听说停用词表,没有上手使用过,真正操作的时候发现有很多东西没有学透彻。这里总结一下,去停用词的思想:在原始文本集中去掉不需要的词汇,字符。虽然有通用的停用词表,但是如果想提高后续的分词效果&…

uniapp使用阿里图标

效果图: 前言 随着uniApp的深入人心,我司也陆续做了几个使用uniapp做的移动端跨平台软件,在学习使用的过程中深切的感受到了其功能强大和便捷,今日就如何在uniapp项目中使用阿里字体图标的问题为大家献上我的一点心得&#xff0…

iconfont—阿里图标的使用

阿里图标库为我们提供了许多丰富精美的图标, 可以通过代码引入的方式将图标库引入到我们的项目中,用来美化我们的界面。iconfont 的使用方式有以下几种: 方式一:font-class 在线引入 打开网址进入首页,输入我们想要的…

java前端中的icon_阿里巴巴矢量图标库Iconfont的使用方法

前言 现在网络上有很多矢量图标库,但是能自定义的却很少,不能自定义的体积就很大,造成不必要的浪费。阿里巴巴矢量图标库Iconfont很好的规避了这个问题,能够自定义添加图标到你定义的项目中,运用也很简单。 选择图标 打…

MUI项目中使用阿里巴巴矢量图标库(保姆篇)

话不多说,直接进入主题. 一、要在MUI项目中使用阿里图标库, 就得先进入阿里图标库的官网 这里是官网网址: https://www.iconfont.cn/ 下图是首页的样子 二、使用阿里图标的方法有很多种,,这里就说一下我使用的这种 1.在搜索框中输入关键字,…

微信小程序如何使用阿里妈妈iconfont图标库

1、首先进入iconfont首页,没有账号的先注册账号 http://www.iconfont.cn/ 2、选择需要的图标,加入到你的小车中 3、在这里新建一个项目将图标加进去,这个时候就可以查看并且下载下来了 4、点击download code将图标代码下载下来,…

基于Java的阿里妈妈数据抓取技术

基于Java的阿里妈妈数据抓取技术 前言: 对于需要登录的网站爬虫最大的困难就是需要登录,然后才能获取到数据,如微博,阿里妈妈,webqq等。之前也有看过使用浏览器登录到网站后直接从浏览器中获取cookie的文章&#xff0…

uni-app中引入iconfont阿里巴巴矢量图标库

一:首先看一下图标 二:将icon.css文件放到项目中。 在static下面新建icon.css文件(一般是建在common文件下面,建在其他位置上也可以),将iconfont里面的内容复制到icon.css。 这里要对icon.css内容做一些改变…

引入阿里iconfont图标方法以及注意事项

背景 在我们做日常项目时,通常会用到icon图标或者是一些图标字体,阿里iconfont是我们选择的较多的一种,下面我将会介绍使用方法和几种常用的引用方式 iconfont新建项目 官网:https://www.iconfont.cn/ 在首页选择【图标管理】-…

如何在代码里添加并使用阿里巴巴矢量图标-iconfont,在此常用有三种引入方法

iconfont-阿里巴巴矢量图库 在登录好账号的前提下进行以下操作: 添加icon: 首先搜索你想要的icon名,比如:首页选好你想要的图——加入购物车——添加至项目(没有项目的话可以新建项目,如果需要很多icon&a…

阿里巴巴icon图标尽在掌握(前端如何引入icon库,美丽图标随你处置T.T)

前端如何引入icon库 挑选图标1.进入阿里矢量图标库[iconfont图标库地址](https://www.iconfont.cn/)2.寻找自己需要的图标加入购物车3.进入购物车,下载代码 引用图标我们先来看看下载的需要加入的css代码直接调用封装好的调用效果展示 挑选图标 1.进入阿里矢量图标…

项目中引入阿里巴巴图标——iconfont图标的使用-svg格式

项目中引入阿里巴巴图标——iconfont图标的使用-svg格式 一、下载图标 1、先进入iconfont.cn页面 iconfont官网:https://www.iconfont.cn/ 2、登陆,并选择你要用的图标进行下载 3、点击下载,并选择弹框下面的色值和大小,点击sv…

某Java大佬在地表最强Java企业(阿里)面试总结

面试题真的是博大精深,也通过这个面试题学到了很多东西,很多笔者也不是很懂,如有描述错误的地方还望大佬赐教, 每一次面试都可能问到相同的问题,一面问到,二三面还可能会问到,笔者认为这一点是整…