Git Product home page Git Product logo

lrcview's Introduction

lrcview's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lrcview's Issues

能简化下功能吗

能不和mediaplayer 绑定在一起吗,我只是想要个每隔三秒自动滚动的效果,滚动完了会继续循环滚动的就好了,最好还是能拖动的

无法监听点击事件

我使用的是最新的2.2版本,我发现无论是setOnTapListener或setOnClickListener都无法监听到view的点击事件

加载歌词但不展示

你好,请问调用loadLRc方法后歌词不展示是什么原因?能把用法步骤写再详细一些吗?谢谢

single line

Hi ChanWong21
Thank you for your best library
i have a issue for lyric view your library cant support multiline textview because in singleline lyric show is not perfect.
thanks

频繁切换歌词,换行失效,歌词超出屏幕

前提:oppo手机(出现概率较大)

问题:歌词换行失效。

操作:频繁进行歌曲切换,调用loadLrc(File lrcFile) 加载歌词。偶现折行失效的bug,导致歌词超出屏幕被裁剪。

不知道是否有人遇到过这个问题

LrcView Crash

E/AndroidRuntime: FATAL EXCEPTION: main
java.util.ConcurrentModificationException
at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573)
at me.wcy.lrcview.LrcView.initEntryList(LrcView.java:285)
at me.wcy.lrcview.LrcView.onLrcLoaded(LrcView.java:206)
at me.wcy.lrcview.LrcView.access$000(LrcView.java:27)
at me.wcy.lrcview.LrcView$2.onPostExecute(LrcView.java:192)
at me.wcy.lrcview.LrcView$2.onPostExecute(LrcView.java:183)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.access$500(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5441)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

情景:
多首歌曲,快迅切换(即快速加速不同歌词时)出现该bug。

缺少歌词

有时候会缺少第一句歌词,不知道为什么

中英文歌词同时显示

希望加入中英文歌词同时显示的功能。。。中文歌词 一行,折行再显示英文歌词。已经在您掘金留言了

越界异常

FATAL EXCEPTION: main
java.lang.IndexOutOfBoundsException: Invalid index 31, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at me.wcy.lrcview.LrcView.newlineAnimation(LrcView.java:314)
at me.wcy.lrcview.LrcView.access$100(LrcView.java:27)
at me.wcy.lrcview.LrcView$3.run(LrcView.java:302)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5441)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

在变动播放进度时,出现越界异常,是否在使用的时候未进行边界判断?

如果歌词的毫秒时间长度不是两位,就无法解析

比如这样的歌词:

[00:15.350]卢:是否很惊讶 讲不出说话
[00:19.730]没错我是说 你想分手吗
[00:23.680]曾给你驯服到 就像绵羊
[00:28.880]何解会反咬你一下 你知吗
[00:32.350]王:也许该分心 不应再说话
[00:37.620]被放弃的我 应有此报吗
[00:40.530]如果我曾是个坏牧羊人
[00:45.720]能否再让我试一下
[00:48.570]抱一下


Fix

private static List<LrcEntry> parseLine(String line) {
    if (TextUtils.isEmpty(line)) {
        return null;
    }

    line = line.trim();
    Matcher lineMatcher = Pattern.compile("((\\[\\d\\d:\\d\\d\\.\\d{2,3}\\])+)(.+)").matcher(line);
    if (!lineMatcher.matches()) {
        return null;
    }

    String times = lineMatcher.group(1);
    String text = lineMatcher.group(3);
    List<LrcEntry> entryList = new ArrayList<>();

    Matcher timeMatcher = Pattern.compile("\\[(\\d\\d):(\\d\\d)\\.(\\d){2,3}\\]").matcher(times);
    while (timeMatcher.find()) {
        long min = Long.parseLong(timeMatcher.group(1));
        long sec = Long.parseLong(timeMatcher.group(2));
        long mil = Long.parseLong(timeMatcher.group(3));
        long time = min * DateUtils.MINUTE_IN_MILLIS + sec * DateUtils.SECOND_IN_MILLIS + (mil >= 100L ? mil : mil * 10);
        entryList.add(new LrcEntry(time, text));
    }
    return entryList;
}

`

lrcEntry 高度计算问题

LrcEntry 高度计算存在问题, 您未把行间距计算在内,行数多了,会存在重叠问题
float getTextHeight() {
if (paint == null || staticLayout == null) {
return 0;
}
return staticLayout.getLineCount() * paint.getTextSize(); // 此时行间距为1.0f,
}

关于“二分法查找当前时间应该显示的行数”

private int findShowLine(long time) {

    int left = 0;
    int right = mLrcEntryList.size();

    while (left <= right) {
        int middle = (left + right) / 2;
        long middleTime = mLrcEntryList.get(middle).getTime();

        if (time < middleTime) {
            right = middle - 1;
        } else {
            if (middle + 1 >= mLrcEntryList.size() || time < mLrcEntryList.get(middle + 1).getTime()) {
                return middle;
            }
            left = middle + 1;
        }
    }
    return 0;
}

你好,请问 “middle + 1 >= mLrcEntryList.size()”这段代码中可不可以把mLrcEntryList.size()换成right ?

loadLrcByUrl方法异常

使用loadLrcByUrl方法报出异常,歌词url可正常访问,异常如下:

2019-10-22 15:45:13.139 5643-5712/cn.whiteink.musicpartnerapp E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
    Process: cn.whiteink.musicpartnerapp, PID: 5643
    java.lang.RuntimeException: An error occurred while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:318)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        at java.lang.Thread.run(Thread.java:761)
     Caused by: java.lang.NegativeArraySizeException: -1
        at me.wcy.lrcview.LrcUtils.getContentFromNetwork(LrcUtils.java:154)
        at me.wcy.lrcview.LrcView$4.doInBackground(LrcView.java:354)
        at me.wcy.lrcview.LrcView$4.doInBackground(LrcView.java:351)
        at android.os.AsyncTask$2.call(AsyncTask.java:304)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
        at java.lang.Thread.run(Thread.java:761) 

jitpack.io上的包有bug

implementation 'me.wcy:lrcview:2.2'
image
这段代码明显和GitHub上的代码不一样,而且有滑动问题
你是不是推错包了

发现BUG 了

Accessing hidden field Landroid/animation/ValueAnimator;->sDurationScale:F (greylist-max-p, reflection, denied)
W/System.err: java.lang.NoSuchFieldException: No field sDurationScale in class Landroid/animation/ValueAnimator; (declaration of 'android.animation.ValueAnimator' appears in /system/framework/framework.jar)
W/System.err: at java.lang.Class.getDeclaredField(Native Method)
at me.wcy.lrcview.LrcUtils.resetDurationScale(LrcUtils.java:214)
at me.wcy.lrcview.LrcView.smoothScrollTo(LrcView.java:653)
at me.wcy.lrcview.LrcView.smoothScrollTo(LrcView.java:633)
at me.wcy.lrcview.LrcView.access$800(LrcView.java:47)
at me.wcy.lrcview.LrcView$5.run(LrcView.java:382)
at me.wcy.lrcview.LrcView.runOnUi(LrcView.java:733)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.