Giter Site home page Giter Site logo

zhangliangming / hplyrics Goto Github PK

View Code? Open in Web Editor NEW
207.0 207.0 48.0 44.35 MB

Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果,支持lrc歌词、ksc歌词、krc歌词、trc歌词、网易云API歌词和hrc歌词等歌词格式的显示,支持动感歌词制作。

Java 100.00%

hplyrics's People

Contributors

zhangliangming avatar

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

hplyrics's Issues

对ManyLyricsView 这个类实现的一些建议

ManyLyricsView 这个类业务总结为两部分:一是从LyricsReader 拿到动感歌词数据,并根据歌词数据格式计算出Canvas 画法,;第二就是怎么实现画法了。这第二部分很多地方其实可以进行抽象的,比如画当前行、画当前行以上和画当前行以下这三部分进行抽象的话,用户可以自定义很多东西。比如画当前行时,用户可以将当前行字体画大一点、颜色改一下等等。

能写个wiki吗?

不知道怎么从你原项目中分离出 这个歌词的调用方法。

求助

大佬,我在用歌词库的时候遇到了问题,求大佬帮忙分析下,542839122.万分感谢

Activity里面 setContentView(R.layout.activity_kge_cy);报错:Binary XML file line #143: Error inflating class com.zlm.hp.lyrics.widget.ManyLyricsView

<RelativeLayout
    android:id="@+id/rlTop"
    android:layout_width="match_parent"
    android:layout_height="@dimen/top_height"
    android:background="@color/colorPrimary">

    <ImageView
        android:id="@+id/imageViewBack"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerVertical="true"
        android:paddingLeft="20dp"
        android:paddingTop="17dp"
        android:paddingRight="20dp"
        android:paddingBottom="17dp"
        android:src="@drawable/back_arrow3x" />

    <TextView
        android:id="@+id/textViewTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text=""
        android:textColor="@color/white"
        android:textSize="20sp" />

</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="68dp"
    android:gravity="center"
    android:orientation="vertical">

    <ProgressBar
        android:id="@+id/progressBar"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="280dp"
        android:layout_height="24dp"
        android:layout_centerInParent="true"
        android:max="100"
        android:progress="0"
        android:progressDrawable="@drawable/progress_bar_pingfen" />

    <ImageView
        android:id="@+id/imageViewAvatar"
        android:layout_width="43dp"
        android:layout_height="43dp"
        android:layout_centerVertical="true"
        android:layout_marginRight="-6dp"
        android:layout_toLeftOf="@id/progressBar"
        android:src="@drawable/avatar_default" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@id/progressBar"
        android:layout_centerVertical="true"
        android:layout_marginLeft="18dp"
        android:layout_toRightOf="@id/imageViewAvatar"
        android:text="0分"
        android:textColor="@color/white"
        android:textSize="12sp" />

</RelativeLayout>

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="76dp">

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/line_height"
        android:background="@color/line" />

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/line_height"
        android:layout_gravity="bottom"
        android:background="@color/line" />
</FrameLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="30dp"
    android:paddingRight="30dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="8dp"
            android:layout_height="8dp"
            android:src="@drawable/luzhi3x" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:text="录制 00:03/04:97"
            android:textColor="@color/gray3"
            android:textSize="12sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:gravity="center"
        android:orientation="horizontal">

        <View
            android:layout_width="172dp"
            android:layout_height="@dimen/line_height"
            android:background="@color/line" />

        <Button
            android:layout_width="60dp"
            android:layout_height="22dp"
            android:background="@drawable/btn_normal_bg"
            android:text="关闭原唱"
            android:textColor="@color/white"
            android:textSize="12sp" />

    </LinearLayout>

    <com.zlm.hp.lyrics.widget.ManyLyricsView
        android:id="@+id/manyLyricsView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="30dp"
        android:layout_marginBottom="30dp"
        android:layout_weight="1"
        android:background="@color/white" />



    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal|top"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/imageViewChongchang"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:padding="3dp"
                android:src="@drawable/image_chongchang" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="重唱"
                android:textColor="@color/gray2"
                android:textSize="14sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal|top"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/imageViewShengjiangdiao"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:padding="3dp"
                android:src="@drawable/image_shengjiangdiao" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="升降调"
                android:textColor="@color/gray2"
                android:textSize="14sp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal|top"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/imageViewWancheng"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:padding="3dp"
                android:src="@drawable/image_wancheng" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="完成"
                android:textColor="@color/gray2"
                android:textSize="14sp" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

无法加载我本地的krc歌词文件

我把demo下载下来后,把hplyricslibrary模块导入项目,加载raw下面的歌词文件正常,加载文件夹里面的给出文件报错:

代码如下:
protected String doInBackground(String... strings) {
if(StringUtil.isEmpty(banzou.krcFilePath)){
return null;
}
File krcFile=new File(banzou.krcFilePath);
if(krcFile==null || !krcFile.exists())
return null;
InputStream inputStream;
try {
// inputStream = getResources().openRawResource(R.raw.aa);
// inputStream = new FileInputStream(krcFile);
//延迟看一下加载效果
Thread.sleep(500);

                LyricsReader lyricsReader = new LyricsReader();

// byte[] data = new byte[inputStream.available()];
// inputStream.read(data);
// lyricsReader.loadLrc(data, null, krcFile.getName());

                lyricsReader.loadLrc(krcFile);
                mManyLyricsView.setLyricsReader(lyricsReader);
                //
                if (mMediaPlayer != null && mMediaPlayer.isPlaying() && mManyLyricsView.getLrcStatus() == ManyLyricsView.LRCSTATUS_LRC && mManyLyricsView.getLrcPlayerStatus() != ManyLyricsView.LRCPLAYERSTATUS_PLAY) {
                    mManyLyricsView.play(mMediaPlayer.getCurrentPosition());
                }

// inputStream.close();
} catch (Exception e) {

                mManyLyricsView.setLrcStatus(ManyLyricsView.LRCSTATUS_ERROR);

// Log.e(TAG, e.toString());
e.printStackTrace();
}
inputStream = null;
return null;
}
}.execute("");

java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:366)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
Caused by: java.lang.AssertionError: java.util.zip.ZipException: incorrect header check
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:69)
at com.zlm.hp.lyrics.formats.krc.KrcLyricsFileReader.readInputStream(KrcLyricsFileReader.java:85)
at com.zlm.hp.lyrics.formats.LyricsFileReader.readFile(LyricsFileReader.java:34)
at com.zlm.hp.lyrics.LyricsReader.loadLrc(LyricsReader.java:75)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:542)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:520)
at android.os.AsyncTask$2.call(AsyncTask.java:345)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 4 more
Caused by: java.util.zip.ZipException: incorrect header check
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:175)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:65)
... 11 more
java.lang.AssertionError: java.util.zip.ZipException: incorrect header check
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:69)
at com.zlm.hp.lyrics.formats.krc.KrcLyricsFileReader.readInputStream(KrcLyricsFileReader.java:85)
at com.zlm.hp.lyrics.formats.LyricsFileReader.readFile(LyricsFileReader.java:34)
at com.zlm.hp.lyrics.LyricsReader.loadLrc(LyricsReader.java:75)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:542)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:520)
at android.os.AsyncTask$2.call(AsyncTask.java:345)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
Caused by: java.util.zip.ZipException: incorrect header check
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:175)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:65)
... 11 more
java.util.zip.ZipException: incorrect header check
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:175)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at com.zlm.hp.lyrics.utils.StringCompressUtils.decompress(StringCompressUtils.java:65)
at com.zlm.hp.lyrics.formats.krc.KrcLyricsFileReader.readInputStream(KrcLyricsFileReader.java:85)
at com.zlm.hp.lyrics.formats.LyricsFileReader.readFile(LyricsFileReader.java:34)
at com.zlm.hp.lyrics.LyricsReader.loadLrc(LyricsReader.java:75)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:542)
at com.chunyin.tab2.KGeActivity$11.doInBackground(KGeActivity.java:520)
at android.os.AsyncTask$2.call(AsyncTask.java:345)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:257)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)

当前行歌词不支持自定义非高亮部分歌词颜色问题解决方案。

目前本版不支持当前行歌词非高亮部分字体自定义颜色,使用的是默认字体颜色,需要从copy ManyLyricsView 源码修改drawDownLyrics 方法 else if (i == curLyricsLineNum) 分支才行,代码如下:
else if (i == curLyricsLineNum) {
//画当前行(动感)歌词
float lineLyricsHLWidth = LyricsUtils.getLineLyricsHLWidth(lyricsReader.getLyricsType(), mCurLineFontPaint, splitLyricsLineInfos.get(i), splitLyricsWordIndex, lyricsWordHLTime);
final int[] curLineColors = mCurLineFontColors == null
? paintColors : mCurLineFontColors;
LyricsUtils.drawDynamicText(canvas, mCurLineFontPaint, paintHL, curLineColors, paintHLColors, text,
lineLyricsHLWidth,
textX, lineBottomY);

        }

请问歌词点击回调有吗?

我有这么一个需求,是封面和歌词点击切换,点一下封面显示歌词,点一下歌词显示封面,但是我点击歌词的事件没有响应了,setOnLrcClickListener()方法响应的是点击播放按钮

关于代码

hello,哥们,你的 2.x和3.0以上版本代码没提交上来么,现在看到所有的歌词还是继承 View呀,另外,哥们可以把你的测试demo的代码也上传上来么,想研究下歌词这块,谢啦~

歌词显示竖的

大神,请问一下 歌词显示竖的怎么破啊?方便加下qq或者wx吗?

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.