From 7b0a7a44c096794ede832f65550c3a29da23dbac Mon Sep 17 00:00:00 2001
From: Runt <qingingrunt2010@qq.com>
Date: Wed, 04 May 2022 14:13:18 +0000
Subject: [PATCH] 滑动歌词 计算时间 问题修复

---
 app/src/main/java/com/auto/lyric/service/FloatingWindowService.java |   35 +++++++++++++++++++++++++++++++++++
 1 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/app/src/main/java/com/auto/lyric/service/FloatingWindowService.java b/app/src/main/java/com/auto/lyric/service/FloatingWindowService.java
index 426ee8c..92d3ce3 100644
--- a/app/src/main/java/com/auto/lyric/service/FloatingWindowService.java
+++ b/app/src/main/java/com/auto/lyric/service/FloatingWindowService.java
@@ -22,6 +22,7 @@
 import androidx.annotation.Nullable;
 
 import com.auto.lyric.R;
+import com.auto.lyric.data.LyricObject;
 import com.auto.lyric.data.LyricServer;
 import com.auto.lyric.databinding.FloatViewBinding;
 import com.auto.lyric.util.DeviceUtil;
@@ -195,6 +196,40 @@
         Log.e(TAG,"onStartCommand flags:"+flags+" startId:"+startId+ " intent:"+intent);
         manager.addView(binding.getRoot(),params);
         binding.lyric.setTextSize();
+        binding.lyric.setOnTouchListener(new View.OnTouchListener() {
+            float touchY; //当触摸歌词View时,保存为当前触点的Y轴坐标
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                float tt=event.getY();
+                switch(event.getAction()){
+                    case MotionEvent.ACTION_DOWN:
+                        break;
+                    case MotionEvent.ACTION_MOVE:
+                        touchY=tt-touchY;
+                        binding.lyric.setOffsetY(binding.lyric.getOffsetY()+touchY);
+                        Log.e("LyricView","offsety:"+binding.lyric.getOffsetY());
+                        binding.lyric.invalidate();
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        if(binding.btnStart.getText().equals("开启") || pause) {
+                            int index = binding.lyric.getIndexFromOffsetY(binding.lyric.getOffsetY());
+                            LyricObject object = LyricServer.getLrc_map().get(index);
+                            Log.e("LyricView", "index:"+index+" object:" + object);
+                            if(object != null) {
+                                binding.lyric.setIndex(index);
+                                binding.lyric.setOffsetY(220 - index * (binding.lyric.getSIZEWORD() + 44));
+                                Log.e("LyricView", "object:" + object);
+                                progress = object.begintime;
+                                binding.timer.setText(msFormat.format(progress));
+                            }
+                            binding.lyric.invalidate();
+                        }
+                        break;
+                }
+                touchY=tt;
+                return true;
+            }
+        });
         return super.onStartCommand(intent, flags, startId);
     }
 

--
Gitblit v1.9.1