Clean code and fix some bug

pull/3/head
FongMi 4 years ago
parent 76150fc5e9
commit 3c5bd384f5
  1. 11
      app/src/main/java/com/fongmi/bear/ApiConfig.java
  2. 3
      app/src/main/java/com/fongmi/bear/net/Callback.java
  3. 4
      app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java
  4. 4
      app/src/main/java/com/fongmi/bear/ui/activity/SettingActivity.java
  5. 4
      app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java
  6. 2
      app/src/main/java/com/fongmi/bear/utils/Notify.java
  7. 8
      app/src/main/java/com/fongmi/bear/utils/Utils.java
  8. 42
      app/src/main/java/com/github/catvod/crawler/JarLoader.java
  9. 2
      app/src/main/res/drawable/selector_vod.xml
  10. 6
      app/src/main/res/drawable/shape_vod_focused.xml
  11. 11
      app/src/main/res/drawable/shape_vod_name.xml
  12. 9
      app/src/main/res/drawable/shape_vod_normal.xml
  13. 17
      app/src/main/res/drawable/shape_vod_remark.xml
  14. 6
      app/src/main/res/layout/adapter_vod.xml
  15. 3
      app/src/main/res/values-zh-rCN/strings.xml
  16. 3
      app/src/main/res/values-zh-rTW/strings.xml
  17. 3
      app/src/main/res/values/strings.xml

@ -2,6 +2,7 @@ package com.fongmi.bear;
import android.os.Handler;
import android.os.Looper;
import android.util.Patterns;
import androidx.annotation.NonNull;
@ -68,8 +69,8 @@ public class ApiConfig {
}
public void loadConfig(Callback callback) {
if (Prefers.getUrl().isEmpty()) {
handler.post(() -> callback.error(""));
if (Prefers.getUrl().isEmpty() || !Patterns.WEB_URL.matcher(Prefers.getUrl()).matches()) {
handler.post(() -> callback.error(0));
return;
}
OKHttp.get().client().newCall(new Request.Builder().url(Prefers.getUrl()).build()).enqueue(new Callback() {
@ -83,13 +84,13 @@ public class ApiConfig {
loadJar(spider);
handler.post(callback::success);
} catch (Exception e) {
handler.post(() -> callback.error("配置解析失敗"));
handler.post(() -> callback.error(R.string.error_config_parse));
}
}
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
handler.post(() -> callback.error("配置取得失敗"));
handler.post(() -> callback.error(R.string.error_config_get));
}
});
}
@ -115,7 +116,7 @@ public class ApiConfig {
flags.addAll(Json.safeList(object, "flags"));
}
private void loadJar(String spider) throws IOException {
private void loadJar(String spider) throws Exception {
Request request = new Request.Builder().url(spider).build();
Response response = OKHttp.get().client().newCall(request).execute();
jarLoader.load(response.body().bytes());

@ -1,6 +1,7 @@
package com.fongmi.bear.net;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import java.io.IOException;
@ -12,7 +13,7 @@ public abstract class Callback implements okhttp3.Callback {
public void success() {
}
public void error(String msg) {
public void error(@StringRes int resId) {
}
@Override

@ -79,7 +79,7 @@ public class DetailActivity extends BaseActivity {
mBinding.group.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() {
@Override
public void onChildViewHolderSelected(@NonNull RecyclerView parent, @Nullable RecyclerView.ViewHolder child, int position, int subposition) {
mBinding.episode.setSelectedPosition(position * 20);
if (mEpisodeAdapter.size() > 20) mBinding.episode.setSelectedPosition(position * 20);
}
});
mBinding.flag.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() {
@ -138,7 +138,7 @@ public class DetailActivity extends BaseActivity {
List<String> items = new ArrayList<>();
int itemSize = (int) Math.ceil(size / 20.0f);
for (int i = 0; i < itemSize; i++) items.add(String.valueOf(i * 20 + 1));
mGroupAdapter.addAll(0, items);
mBinding.group.setVisibility(View.VISIBLE);
mGroupAdapter.addAll(0, items);
}
}

@ -74,9 +74,9 @@ public class SettingActivity extends BaseActivity {
}
@Override
public void error(String msg) {
public void error(int resId) {
Notify.dismiss();
Notify.show(msg);
Notify.show(resId);
}
});
}

@ -46,9 +46,9 @@ public class SplashActivity extends BaseActivity {
}
@Override
public void error(String msg) {
public void error(int resId) {
HomeActivity.start(getActivity());
Notify.show(msg);
Notify.show(resId);
}
});
}

@ -30,7 +30,7 @@ public class Notify {
}
public static void show(int resId) {
show(Utils.getString(resId));
if (resId != 0) show(ResUtil.getString(resId));
}
public static void show(String text) {

@ -10,18 +10,12 @@ import android.view.KeyEvent;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.fongmi.bear.App;
import com.fongmi.bear.R;
import com.google.android.exoplayer2.util.Util;
public class Utils {
public static String getString(int resId) {
return App.get().getString(resId);
}
public static boolean hasEvent(KeyEvent event) {
return isArrowKey(event) || isBackKey(event) || isMenuKey(event) || isDigitKey(event) || event.isLongPress();
}
@ -63,7 +57,7 @@ public class Utils {
}
public static void loadImage(String url, ImageView view) {
Glide.with(App.get()).load(url).placeholder(R.drawable.ic_img_loading).error(R.drawable.ic_img_error).transform(new CenterCrop(), new RoundedCorners(ResUtil.dp2px(8))).into(view);
Glide.with(App.get()).load(url).placeholder(R.drawable.ic_img_loading).error(R.drawable.ic_img_error).into(view);
}
public static boolean hasPIP() {

@ -37,35 +37,19 @@ public class JarLoader {
}
}
public void load(byte[] jarData) {
try {
spiders.clear();
proxyFun = null;
writeJar(jarData);
classLoader = new DexClassLoader(FileUtil.getJarPath(), FileUtil.getCachePath(), null, App.get().getClassLoader());
int count = 0;
do {
try {
Class<?> classInit = classLoader.loadClass("com.github.catvod.spider.Init");
if (classInit != null) {
Method method = classInit.getMethod("init", Context.class);
method.invoke(classInit, App.get());
try {
Class<?> proxy = classLoader.loadClass("com.github.catvod.spider.Proxy");
proxyFun = proxy.getMethod("proxy", Map.class);
} catch (Exception e) {
}
break;
}
Thread.sleep(200);
} catch (Exception e) {
e.printStackTrace();
}
count++;
} while (count < 5);
} catch (Exception e) {
e.printStackTrace();
public void load(byte[] jarData) throws Exception {
spiders.clear();
proxyFun = null;
writeJar(jarData);
classLoader = new DexClassLoader(FileUtil.getJarPath(), FileUtil.getCachePath(), null, App.get().getClassLoader());
Class<?> classInit = classLoader.loadClass("com.github.catvod.spider.Init");
Class<?> classProxy = classLoader.loadClass("com.github.catvod.spider.Proxy");
if (classInit != null) {
Method method = classInit.getMethod("init", Context.class);
method.invoke(classInit, App.get());
}
if (classProxy != null) {
proxyFun = classProxy.getMethod("proxy", Map.class);
}
}

@ -1,6 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_vod_focused" android:state_focused="true" />
<item android:drawable="@drawable/shape_vod_focused" android:state_selected="true" />
<item android:drawable="@drawable/shape_vod_normal" />
</selector>

@ -2,12 +2,8 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_20" />
<corners android:radius="8dp" />
<stroke
android:width="1dp"
android:width="1.5dp"
android:color="@color/white" />
</shape>

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_60" />
<corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp" />
</shape>

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_20" />
<corners android:radius="8dp" />
</shape>

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#CC177535" />
<corners
android:bottomRightRadius="4dp"
android:topRightRadius="4dp" />
<padding
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp" />
</shape>

@ -3,6 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="150dp"
android:layout_height="200dp"
android:background="@color/black_20"
android:focusable="true"
android:focusableInTouchMode="true">
@ -18,7 +19,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/name"
android:background="@drawable/shape_vod_remark"
android:background="#CC177535"
android:padding="4dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
@ -29,7 +31,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/shape_vod_name"
android:background="@color/black_50"
android:ellipsize="marquee"
android:gravity="center"
android:marqueeRepeatLimit="marquee_forever"

@ -35,6 +35,7 @@
<string name="dialog_config_url_hint">请输入配置接口</string>
<!-- Error -->
<string name="error_config">配置载入失败</string>
<string name="error_config_get">配置取得失败</string>
<string name="error_config_parse">配置解析失败</string>
</resources>

@ -35,6 +35,7 @@
<string name="dialog_config_url_hint">請輸入配置接口</string>
<!-- Error -->
<string name="error_config">配置載入失敗</string>
<string name="error_config_get">配置取得失敗</string>
<string name="error_config_parse">配置解析失敗</string>
</resources>

@ -35,6 +35,7 @@
<string name="dialog_config_url_hint">Please enter the configuration url</string>
<!-- Error -->
<string name="error_config">Configuration load failed</string>
<string name="error_config_get">Configuration get failed</string>
<string name="error_config_parse">Configuration parse failed</string>
</resources>
Loading…
Cancel
Save