Skip to content

Commit

Permalink
fix: #37
Browse files Browse the repository at this point in the history
  • Loading branch information
石工 committed Oct 22, 2019
1 parent 522028e commit e7c02ab
Show file tree
Hide file tree
Showing 9 changed files with 158 additions and 150 deletions.
21 changes: 11 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,17 +76,18 @@ implementation 'me.wcy:lrcview:latestVersion'
## 方法
| 方法 | 描述 |
| ---- | ---- |
| loadLrc(File) | 加载歌词文件 |
| loadLrc(File, File) | 加载双语歌词文件,两种语言的歌词时间戳需要一致 |
| loadLrc(String) | 加载歌词文本 |
| loadLrc(String, String) | 加载双语歌词文本,两种语言的歌词时间戳需要一致 |
| loadLrcByUrl(String) | 加载在线歌词文本 |
| loadLrc(File lrcFile) | 加载歌词文件 |
| loadLrc(File mainLrcFile, File secondLrcFile) | 加载双语歌词文件,两种语言的歌词时间戳需要一致 |
| loadLrc(String lrcText) | 加载歌词文本 |
| loadLrc(String mainLrcText, String secondLrcText) | 加载双语歌词文本,两种语言的歌词时间戳需要一致 |
| loadLrcByUrl(String lrcUrl) | 加载在线歌词文本,默认使用 utf-8 编码 |
| loadLrcByUrl(String lrcUrl, String charset) | 加载在线歌词文本 |
| hasLrc() | 歌词是否有效 |
| setLabel(String) | 设置歌词为空时视图中央显示的文字,如“暂无歌词” |
| updateTime(long) | 刷新歌词 |
| ~~onDrag(long)~~ | ~~将歌词滚动到指定时间。已弃用,请使用 updateTime(long) 代替~~ |
| ~~setOnPlayClickListener(OnPlayClickListener)~~ | ~~设置拖动歌词时,播放按钮点击监听器。如果为非 null ,则激活歌词拖动功能,否则将将禁用歌词拖动功能。已弃用,请使用 setDraggable 代替~~ |
| setDraggable(Boolean, OnPlayClickListener) | 设置歌词是否允许拖动。如果允许拖动,则 OnPlayClickListener 不能为 null |
| setLabel(String label) | 设置歌词为空时视图中央显示的文字,如“暂无歌词” |
| updateTime(long time) | 刷新歌词 |
| ~~onDrag(long time)~~ | ~~将歌词滚动到指定时间。已弃用,请使用 updateTime(long) 代替~~ |
| ~~setOnPlayClickListener(OnPlayClickListener onPlayClickListener)~~ | ~~设置拖动歌词时,播放按钮点击监听器。如果为非 null ,则激活歌词拖动功能,否则将将禁用歌词拖动功能。已弃用,请使用 setDraggable 代替~~ |
| setDraggable(Boolean draggable, OnPlayClickListener onPlayClickListener) | 设置歌词是否允许拖动。如果允许拖动,则 OnPlayClickListener 不能为 null |
| setNormalColor | 设置非当前行歌词字体颜色 |
| setCurrentColor | 设置当前行歌词字体颜色 |
| setTimelineTextColor | 设置拖动歌词时选中歌词的字体颜色 |
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ COMPILE_SDK_VERSION=26
BUILD_TOOLS_VERSION=26.0.3
MIN_SDK_VERSION=14
TARGET_SDK_VERSION=22
VERSION_CODE=211
VERSION_NAME=2.1.1
VERSION_CODE=212
VERSION_NAME=2.1.2
5 changes: 5 additions & 0 deletions lrcview/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ android {
versionCode Integer.parseInt(VERSION_CODE)
versionName VERSION_NAME
}

compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}

apply from: 'jcenter.gradle'
7 changes: 6 additions & 1 deletion lrcview/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
<manifest package="me.wcy.lrcview" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="me.wcy.lrcview">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>
27 changes: 16 additions & 11 deletions lrcview/src/main/java/me/wcy/lrcview/LrcUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import android.text.format.DateUtils;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
Expand All @@ -42,7 +43,7 @@ class LrcUtils {
/**
* 从文件解析双语歌词
*/
public static List<LrcEntry> parseLrc(File[] lrcFiles) {
static List<LrcEntry> parseLrc(File[] lrcFiles) {
if (lrcFiles == null || lrcFiles.length != 2 || lrcFiles[0] == null) {
return null;
}
Expand Down Expand Up @@ -94,7 +95,7 @@ private static List<LrcEntry> parseLrc(File lrcFile) {
/**
* 从文本解析双语歌词
*/
public static List<LrcEntry> parseLrc(String[] lrcTexts) {
static List<LrcEntry> parseLrc(String[] lrcTexts) {
if (lrcTexts == null || lrcTexts.length != 2 || TextUtils.isEmpty(lrcTexts[0])) {
return null;
}
Expand Down Expand Up @@ -140,23 +141,27 @@ private static List<LrcEntry> parseLrc(String lrcText) {
/**
* 获取网络文本,需要在工作线程中执行
*/
public static String getContentFromNetwork(String url) {
static String getContentFromNetwork(String url, String charset) {
String lrcText = null;
try {
URL _url = new URL(url);
HttpURLConnection conn = (HttpURLConnection) _url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(10000);
conn.setReadTimeout(10000);

if (conn.getResponseCode() == 200) {
InputStream is = conn.getInputStream();
int size = conn.getContentLength();
byte[] buffer = new byte[size];
is.read(buffer);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = is.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
is.close();
lrcText = new String(buffer);
bos.close();
lrcText = bos.toString(charset);
}
} catch (IOException e) {
} catch (Exception e) {
e.printStackTrace();
}
return lrcText;
Expand Down Expand Up @@ -201,15 +206,15 @@ private static List<LrcEntry> parseLine(String line) {
/**
* 转为[分:秒]
*/
public static String formatTime(long milli) {
static String formatTime(long milli) {
int m = (int) (milli / DateUtils.MINUTE_IN_MILLIS);
int s = (int) ((milli / DateUtils.SECOND_IN_MILLIS) % 60);
String mm = String.format(Locale.getDefault(), "%02d", m);
String ss = String.format(Locale.getDefault(), "%02d", s);
return mm + ":" + ss;
}

public static void resetDurationScale() {
static void resetDurationScale() {
try {
Field mField = ValueAnimator.class.getDeclaredField("sDurationScale");
mField.setAccessible(true);
Expand Down
Loading

0 comments on commit e7c02ab

Please sign in to comment.