当前位置: 首页 > news >正文

学做简单网站深圳企业社保网站官网

学做简单网站,深圳企业社保网站官网,全网营销推广方案外包,好站站网站建设推广看到这个效果#xff0c;可能会想到完全自定义一个控件#xff0c;其实我们在系统Seekbar的基础上#xff0c;将progressDrawable中progress背景设为透明后#xff0c;叠加绘制试听状态下的进度区域即可 class PlayerSeekBar JvmOverloads constructor(context: Context,a… 看到这个效果可能会想到完全自定义一个控件其实我们在系统Seekbar的基础上将progressDrawable中progress背景设为透明后叠加绘制试听状态下的进度区域即可 class PlayerSeekBar JvmOverloads constructor(context: Context,attrs: AttributeSet? null,defStyleAttr: Int 0,defStyleRes: Int 0, ) : SeekBar(context, attrs, defStyleAttr, defStyleRes) {private var tryPlayable trueprivate var tryPlayableStartPos 10private var tryPlayableEndPos 60private val normalProgressDrawable: Drawable? context.getDrawable(R.drawable.bg_player_seekbar)private val fakeProgressDrawable: Drawable? context.getDrawable(R.drawable.bg_player_seekbar_fake)private val tryPlayableBgPaint: Paint by lazy {Paint().apply {isAntiAlias truestyle Paint.Style.FILL_AND_STROKEcolor context.getColor(R.color.player_try_playable_progress_color)}}private val tryPlayableProgressPaint by lazy {Paint().apply {isAntiAlias truestyle Paint.Style.FILL_AND_STROKEcolor context.getColor(R.color.player_track_color)}}private var playSeekBarChangeListener: OnPlaySeekBarChangeListener? nullinit {setOnSeekBarChangeListener(object : OnSeekBarChangeListener {override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {playSeekBarChangeListener?.onProgressChanged(seekBar, progress, fromUser)}override fun onStartTrackingTouch(seekBar: SeekBar?) {playSeekBarChangeListener?.onStartTrackingTouch(seekBar)}override fun onStopTrackingTouch(seekBar: SeekBar?) {playSeekBarChangeListener?.onStopTrackingTouch(seekBar)if (isOverTryPlayableAre()) {playSeekBarChangeListener?.onOverTryPlayableArea()}}})}private fun isOverTryPlayableAre(): Boolean {return tryPlayable (progress tryPlayableEndPos || progress tryPlayableStartPos)}override fun onDraw(canvas: Canvas?) {super.onDraw(canvas)if (tryPlayable) {val tryPlayableProgress progress.coerceAtLeast(tryPlayableStartPos).coerceAtMost(tryPlayableEndPos)// 试听区域背景drawTryPlayableRect(canvas, tryPlayableBgPaint, tryPlayableStartPos, tryPlayableEndPos)// 试听区域进度drawTryPlayableRect(canvas,tryPlayableProgressPaint,tryPlayableStartPos,tryPlayableProgress)}}private fun drawTryPlayableRect(canvas: Canvas?, paint: Paint, startPos: Int, endPos: Int) {val percent (endPos - startPos) * 1.0F / (max - min)val left paddingLeft (startPos - min) * 1.0F / (max - min) * (width - paddingLeft - paddingRight)val top paddingTop.toFloat()val right left (width - paddingLeft - paddingRight) * percentval bottom (height - paddingBottom).toFloat()canvas?.drawRect(left, top, right, bottom, paint)}fun setTryPlayable(tryPlayable: Boolean) {this.tryPlayable tryPlayableprogressDrawable if (tryPlayable) {fakeProgressDrawable} else {normalProgressDrawable}invalidate()}fun setTryPlayProgress(tryPlayableStartPos: Int, tryPlayableEndPos: Int) {this.tryPlayableStartPos tryPlayableStartPosthis.tryPlayableEndPos tryPlayableEndPosinvalidate()}fun setOnPlaySeekBarChangeListener(listener: OnPlaySeekBarChangeListener) {this.playSeekBarChangeListener listener}interface OnPlaySeekBarChangeListener : OnSeekBarChangeListener {// 超出试听区域fun onOverTryPlayableArea()} }‍
http://www.yutouwan.com/news/357475/

相关文章:

  • 网站建设价格怎么算网站制作的内容包含
  • 公司网站设计与制烟台 做网站
  • 网站服务器放置地查询wordpress调用外链图片
  • 无锡网络公司无锡网站制作做跨境电商被骗了三万
  • 网站赏析软文时光发稿平台
  • 订货网站建设建设vip网站相关视频
  • 有什么网站做打印店品牌vi设计案例分析
  • 什么软件做网站描述正规网站建设定制
  • 网站建设专业名词解释网站制作wordpress页面模板下载地址
  • 深圳市公司网站建设企业小程序制作开发定制
  • 做网站的上香动画免费虚拟机安卓版
  • 如何做强企业网站怎么建立自己的公众号
  • 三门县正规营销型网站建设地址制作充值网站
  • html5 制作手机网站阿克顿巴网站建设的目的
  • 成都网站制作套餐wordpress调用文章的tags
  • 网站建设费是什么意思整站seo包年费用
  • 技术号的网站建设免费网络加速
  • 上海昆山网站公司哪家好在线做logo的网站
  • 飞凡网站建设我看别人做系统就直接网站下载文件
  • 网站建设时应该做的优化建设银行官网首页网站购纪念币
  • 做一个网站的建设过程电子政务网站建设的实验体会
  • aws的efs可以做网站的什么教学网站设计与开发
  • 网站开发虚拟主机系统wordpress 非常慢
  • 公司网站如何做百度收录建筑设计院分公司加盟
  • 潍坊行业网站有没有做吉祥物的网站
  • 浙江省网站建设公司排名it外包范围
  • 江苏省建设厅网站建造师强制注销开原网站建设
  • 云南建设投资控股集团有限公司网站做商城网站需要什么资质
  • 电子商务网站建设代码企业网站开发前后台模块设计
  • 怎样做网站维护建设银行网站可以查保单吗