diff --git a/app/build.gradle b/app/build.gradle
index 2e624d8ca..6229faf8f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -38,7 +38,6 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.room:room-runtime:2.4.2'
- implementation 'com.github.androidprogresslayout:library:2.0.2@aar'
implementation 'com.github.bumptech.glide:glide:4.13.2'
implementation 'com.google.android.material:material:1.6.1'
implementation 'com.google.android.exoplayer:exoplayer:2.18.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b34560ede..42646a7f2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -59,6 +59,11 @@
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:screenOrientation="sensorLandscape" />
+
+
lives;
private final List sites;
private final Handler handler;
- private String spider;
private Parse parse;
private Site home;
@@ -75,8 +74,10 @@ public class ApiConfig {
public void onResponse(@NonNull Call call, @NonNull Response response) {
try {
clear();
- parseJson(response.body().string());
- loadJar();
+ JsonObject object = new Gson().fromJson(response.body().string(), JsonObject.class);
+ String spider = Json.safeString(object, "spider", "");
+ parseJson(object);
+ loadJar(spider);
handler.post(callback::success);
} catch (Exception e) {
handler.post(() -> callback.error("配置解析失敗"));
@@ -90,9 +91,7 @@ public class ApiConfig {
});
}
- private void parseJson(String json) {
- JsonObject object = new Gson().fromJson(json, JsonObject.class);
- spider = Json.safeString(object, "spider", "");
+ private void parseJson(JsonObject object) {
for (JsonElement opt : object.get("sites").getAsJsonArray()) {
JsonObject obj = (JsonObject) opt;
Site site = new Site();
@@ -112,7 +111,7 @@ public class ApiConfig {
}
}
- private void loadJar() throws IOException {
+ private void loadJar(String spider) throws IOException {
Request request = new Request.Builder().url(spider).build();
Response response = OKHttp.get().client().newCall(request).execute();
jarLoader.load(response.body().bytes());
diff --git a/app/src/main/java/com/fongmi/bear/bean/Result.java b/app/src/main/java/com/fongmi/bear/bean/Result.java
index 5083eb814..22d69efcc 100644
--- a/app/src/main/java/com/fongmi/bear/bean/Result.java
+++ b/app/src/main/java/com/fongmi/bear/bean/Result.java
@@ -1,5 +1,7 @@
package com.fongmi.bear.bean;
+import androidx.annotation.NonNull;
+
import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
@@ -8,6 +10,8 @@ import java.util.List;
public class Result {
+ @SerializedName("class")
+ private List types;
@SerializedName("list")
private List list;
@@ -16,7 +20,17 @@ public class Result {
return result == null ? new Result() : result;
}
+ public List getTypes() {
+ return types;
+ }
+
public List getList() {
return list == null ? Collections.emptyList() : list;
}
+
+ @NonNull
+ @Override
+ public String toString() {
+ return new Gson().toJson(this);
+ }
}
diff --git a/app/src/main/java/com/fongmi/bear/bean/Type.java b/app/src/main/java/com/fongmi/bear/bean/Type.java
new file mode 100644
index 000000000..75477e678
--- /dev/null
+++ b/app/src/main/java/com/fongmi/bear/bean/Type.java
@@ -0,0 +1,19 @@
+package com.fongmi.bear.bean;
+
+import com.google.gson.annotations.SerializedName;
+
+public class Type {
+
+ @SerializedName("type_id")
+ private String typeId;
+ @SerializedName("type_name")
+ private String typeName;
+
+ public String getTypeId() {
+ return typeId;
+ }
+
+ public String getTypeName() {
+ return typeName;
+ }
+}
diff --git a/app/src/main/java/com/fongmi/bear/model/SiteViewModel.java b/app/src/main/java/com/fongmi/bear/model/SiteViewModel.java
index 9ea5a7262..79985abbe 100644
--- a/app/src/main/java/com/fongmi/bear/model/SiteViewModel.java
+++ b/app/src/main/java/com/fongmi/bear/model/SiteViewModel.java
@@ -11,38 +11,64 @@ import com.fongmi.bear.bean.Site;
import com.github.catvod.crawler.Spider;
import com.github.catvod.crawler.SpiderDebug;
+import java.util.HashMap;
+import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
public class SiteViewModel extends ViewModel {
- public ExecutorService mService;
public MutableLiveData mResult;
+ public ExecutorService mService;
public SiteViewModel() {
- this.mService = Executors.newFixedThreadPool(5);
+ this.mService = Executors.newFixedThreadPool(2);
this.mResult = new MutableLiveData<>();
}
- public void homeContent(String key) {
- if (TextUtils.isEmpty(key)) {
+ public MutableLiveData getResult() {
+ return mResult;
+ }
+
+ public void homeContent() {
+ Site home = ApiConfig.get().getHome();
+ if (TextUtils.isEmpty(home.getKey())) {
mResult.postValue(new Result());
- return;
- }
- Site site = ApiConfig.get().getSite(key);
- if (site.getType() == 3) {
- mService.submit(() -> {
- Spider spider = ApiConfig.get().getCSP(site);
+ } else {
+ postResult(() -> {
+ Spider spider = ApiConfig.get().getCSP(home);
String homeContent = spider.homeContent(false);
- SpiderDebug.log(homeContent);
+ SpiderDebug.json(homeContent);
Result result = Result.objectFrom(homeContent);
- if (result.getList().isEmpty()) {
- String homeVideoContent = spider.homeVideoContent();
- SpiderDebug.log(homeVideoContent);
- result = Result.objectFrom(homeVideoContent);
- }
- mResult.postValue(result);
+ if (result.getList().size() > 0) return result;
+ String homeVideoContent = spider.homeVideoContent();
+ SpiderDebug.json(homeVideoContent);
+ return Result.objectFrom(homeVideoContent);
});
}
}
+
+ public void categoryContent(String tid, String page, boolean filter, HashMap extend) {
+ Site home = ApiConfig.get().getHome();
+ postResult(() -> {
+ Spider spider = ApiConfig.get().getCSP(home);
+ String categoryContent = spider.categoryContent(tid, page, filter, extend);
+ SpiderDebug.json(categoryContent);
+ return Result.objectFrom(categoryContent);
+ });
+ }
+
+ private void postResult(Callable callable) {
+ mService.execute(() -> {
+ try {
+ Future future = mService.submit(callable);
+ Result result = future.get(10, TimeUnit.SECONDS);
+ mResult.postValue(result);
+ } catch (Exception e) {
+ mResult.postValue(new Result());
+ }
+ });
+ }
}
diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java
index f8e5ddcff..41135dd4c 100644
--- a/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java
+++ b/app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java
@@ -9,9 +9,9 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.viewbinding.ViewBinding;
-import com.fongmi.bear.ApiConfig;
import com.fongmi.bear.R;
import com.fongmi.bear.bean.Func;
+import com.fongmi.bear.bean.Result;
import com.fongmi.bear.databinding.ActivityHomeBinding;
import com.fongmi.bear.model.SiteViewModel;
import com.fongmi.bear.ui.adapter.FuncAdapter;
@@ -39,7 +39,7 @@ public class HomeActivity extends BaseActivity {
protected void initView() {
setRecyclerView();
setViewModel();
- homeContent();
+ getContent();
}
@Override
@@ -61,17 +61,21 @@ public class HomeActivity extends BaseActivity {
mSiteViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
mSiteViewModel.mResult.observe(this, result -> {
mVodAdapter.addAll(result.getList());
- mBinding.recommendLayout.showContent();
+ mBinding.progress.showContent();
});
}
- private void homeContent() {
- mBinding.recommendLayout.showProgress();
- mSiteViewModel.homeContent(ApiConfig.get().getHome().getKey());
+ private void getContent() {
+ mBinding.progress.showProgress();
+ mSiteViewModel.homeContent();
}
private void onFuncClick(Func item) {
switch (item.getResId()) {
+ case R.string.home_vod:
+ Result result = mSiteViewModel.getResult().getValue();
+ if (result != null) VodActivity.start(this, result);
+ break;
case R.string.home_setting:
SettingActivity.start(this);
break;
@@ -82,6 +86,6 @@ public class HomeActivity extends BaseActivity {
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) return;
- homeContent();
+ getContent();
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java
index 9bb29e226..5590575fd 100644
--- a/app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java
+++ b/app/src/main/java/com/fongmi/bear/ui/activity/SplashActivity.java
@@ -32,7 +32,6 @@ public class SplashActivity extends BaseActivity {
@Override
public void onAnimationEnd(Animator animation) {
mBinding.title.setVisibility(View.GONE);
- mBinding.progress.animate().alpha(1).setDuration(500).start();
mBinding.info.animate().alpha(1).setDuration(500).start();
loadConfig();
}
diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/VodActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/VodActivity.java
new file mode 100644
index 000000000..ed2d4ea8d
--- /dev/null
+++ b/app/src/main/java/com/fongmi/bear/ui/activity/VodActivity.java
@@ -0,0 +1,81 @@
+package com.fongmi.bear.ui.activity;
+
+import android.app.Activity;
+import android.content.Intent;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewbinding.ViewBinding;
+import androidx.viewpager2.adapter.FragmentStateAdapter;
+
+import com.fongmi.bear.bean.Result;
+import com.fongmi.bear.bean.Type;
+import com.fongmi.bear.databinding.ActivityVodBinding;
+import com.fongmi.bear.ui.fragment.VodFragment;
+import com.google.android.material.tabs.TabLayout;
+
+public class VodActivity extends BaseActivity {
+
+ private ActivityVodBinding mBinding;
+ private Result mResult;
+
+ private String getResult() {
+ return getIntent().getStringExtra("result");
+ }
+
+ public static void start(Activity activity, Result result) {
+ Intent intent = new Intent(activity, VodActivity.class);
+ intent.putExtra("result", result.toString());
+ activity.startActivity(intent);
+ }
+
+ @Override
+ protected ViewBinding getBinding() {
+ return mBinding = ActivityVodBinding.inflate(getLayoutInflater());
+ }
+
+ @Override
+ protected void initView() {
+ mResult = Result.objectFrom(getResult());
+ for (Type type : mResult.getTypes()) mBinding.tab.addTab(mBinding.tab.newTab().setText(type.getTypeName()));
+ mBinding.pager.setAdapter(new PageAdapter(this));
+ mBinding.pager.setOffscreenPageLimit(mResult.getTypes().size());
+ }
+
+ @Override
+ protected void initEvent() {
+ mBinding.tab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
+ @Override
+ public void onTabSelected(TabLayout.Tab tab) {
+ mBinding.pager.setCurrentItem(tab.getPosition());
+ }
+
+ @Override
+ public void onTabUnselected(TabLayout.Tab tab) {
+ }
+
+ @Override
+ public void onTabReselected(TabLayout.Tab tab) {
+ }
+ });
+ }
+
+ public class PageAdapter extends FragmentStateAdapter {
+
+ public PageAdapter(@NonNull FragmentActivity activity) {
+ super(activity);
+ }
+
+ @NonNull
+ @Override
+ public Fragment createFragment(int position) {
+ return VodFragment.newInstance(mResult.getTypes().get(position).getTypeId());
+ }
+
+ @Override
+ public int getItemCount() {
+ return mResult.getTypes().size();
+ }
+ }
+}
diff --git a/app/src/main/java/com/fongmi/bear/ui/custom/ProgressLayout.java b/app/src/main/java/com/fongmi/bear/ui/custom/ProgressLayout.java
new file mode 100644
index 000000000..0b5726a5a
--- /dev/null
+++ b/app/src/main/java/com/fongmi/bear/ui/custom/ProgressLayout.java
@@ -0,0 +1,158 @@
+package com.fongmi.bear.ui.custom;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.fongmi.bear.databinding.ViewProgressBinding;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+public class ProgressLayout extends RelativeLayout {
+
+ private static final String TAG_PROGRESS = "ProgressLayout.TAG_PROGRESS";
+ private static final String TAG_ERROR = "ProgressLayout.TAG_ERROR";
+
+ public enum State {
+ CONTENT, PROGRESS, ERROR
+ }
+
+ private View mProgressView;
+ private TextView mErrorTextView;
+ private List mContentViews = new ArrayList();
+
+ private ProgressLayout.State mState = ProgressLayout.State.CONTENT;
+
+ public ProgressLayout(Context context) {
+ super(context);
+ }
+
+ public ProgressLayout(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public ProgressLayout(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ init();
+ }
+
+ private void init() {
+ mProgressView = ViewProgressBinding.inflate(LayoutInflater.from(getContext())).getRoot();
+ LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ layoutParams.addRule(CENTER_IN_PARENT);
+ mProgressView.setTag(TAG_PROGRESS);
+ addView(mProgressView, layoutParams);
+ mErrorTextView = new TextView(getContext());
+ mErrorTextView.setTag(TAG_ERROR);
+ layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ layoutParams.addRule(CENTER_IN_PARENT);
+ addView(mErrorTextView, layoutParams);
+ mProgressView.setVisibility(GONE);
+ }
+
+ @Override
+ public void addView(View child, int index, ViewGroup.LayoutParams params) {
+ super.addView(child, index, params);
+
+ if (child.getTag() == null || (!child.getTag().equals(TAG_PROGRESS) && !child.getTag().equals(TAG_ERROR))) {
+ mContentViews.add(child);
+ }
+ }
+
+ public void showProgress() {
+ switchState(ProgressLayout.State.PROGRESS, null, Collections.emptyList());
+ }
+
+ public void showProgress(List skipIds) {
+ switchState(ProgressLayout.State.PROGRESS, null, skipIds);
+ }
+
+ public void showErrorText() {
+ switchState(ProgressLayout.State.ERROR, null, Collections.emptyList());
+ }
+
+ public void showErrorText(List skipIds) {
+ switchState(ProgressLayout.State.ERROR, null, skipIds);
+ }
+
+ public void showErrorText(String error) {
+ switchState(ProgressLayout.State.ERROR, error, Collections.emptyList());
+ }
+
+ public void showErrorText(String error, List skipIds) {
+ switchState(ProgressLayout.State.ERROR, error, skipIds);
+ }
+
+ public void showContent() {
+ switchState(ProgressLayout.State.CONTENT, null, Collections.emptyList());
+ }
+
+ public void showContent(List skipIds) {
+ switchState(ProgressLayout.State.CONTENT, null, skipIds);
+ }
+
+ public void switchState(ProgressLayout.State state) {
+ switchState(state, null, Collections.emptyList());
+ }
+
+ public void switchState(ProgressLayout.State state, String errorText) {
+ switchState(state, errorText, Collections.emptyList());
+ }
+
+ public void switchState(ProgressLayout.State state, List skipIds) {
+ switchState(state, null, skipIds);
+ }
+
+ public void switchState(ProgressLayout.State state, String errorText, List skipIds) {
+ mState = state;
+ switch (state) {
+ case CONTENT:
+ mErrorTextView.setVisibility(View.GONE);
+ mProgressView.setVisibility(View.GONE);
+ setContentVisibility(true, skipIds);
+ break;
+ case PROGRESS:
+ mErrorTextView.setVisibility(View.GONE);
+ mProgressView.setVisibility(View.VISIBLE);
+ setContentVisibility(false, skipIds);
+ break;
+ case ERROR:
+ mErrorTextView.setText(errorText);
+ mErrorTextView.setVisibility(View.VISIBLE);
+ mProgressView.setVisibility(View.GONE);
+ setContentVisibility(false, skipIds);
+ break;
+ }
+ }
+
+ public ProgressLayout.State getState() {
+ return mState;
+ }
+
+ public boolean isProgress() {
+ return mState == ProgressLayout.State.PROGRESS;
+ }
+
+ public boolean isContent() {
+ return mState == ProgressLayout.State.CONTENT;
+ }
+
+ public boolean isError() {
+ return mState == ProgressLayout.State.ERROR;
+ }
+
+ private void setContentVisibility(boolean visible, List skipIds) {
+ for (View v : mContentViews) {
+ if (!skipIds.contains(v.getId())) {
+ v.setVisibility(visible ? View.VISIBLE : View.GONE);
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java b/app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java
new file mode 100644
index 000000000..2bf3fc14f
--- /dev/null
+++ b/app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java
@@ -0,0 +1,72 @@
+package com.fongmi.bear.ui.fragment;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.GridLayoutManager;
+
+import com.fongmi.bear.databinding.FragmentVodBinding;
+import com.fongmi.bear.model.SiteViewModel;
+import com.fongmi.bear.ui.adapter.VodAdapter;
+import com.fongmi.bear.ui.custom.SpaceItemDecoration;
+
+import java.util.HashMap;
+
+public class VodFragment extends Fragment {
+
+ private FragmentVodBinding mBinding;
+ private SiteViewModel mSiteViewModel;
+ private VodAdapter mVodAdapter;
+
+ private String getTypeId() {
+ return getArguments().getString("typeId");
+ }
+
+ public static VodFragment newInstance(String typeId) {
+ Bundle args = new Bundle();
+ args.putString("typeId", typeId);
+ VodFragment fragment = new VodFragment();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ mBinding = FragmentVodBinding.inflate(inflater, container, false);
+ return mBinding.getRoot();
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ setRecyclerView();
+ setViewModel();
+ getContent();
+ }
+
+ private void setRecyclerView() {
+ mBinding.recycler.setHasFixedSize(true);
+ mBinding.recycler.setLayoutManager(new GridLayoutManager(getContext(), 5));
+ mBinding.recycler.addItemDecoration(new SpaceItemDecoration(5, 12, false, 0));
+ mBinding.recycler.setAdapter(mVodAdapter = new VodAdapter());
+ }
+
+ private void setViewModel() {
+ mSiteViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
+ mSiteViewModel.mResult.observe(getViewLifecycleOwner(), result -> {
+ mVodAdapter.addAll(result.getList());
+ mBinding.progress.showContent();
+ });
+ }
+
+ private void getContent() {
+ mBinding.progress.showProgress();
+ mSiteViewModel.categoryContent(getTypeId(), "1", true, new HashMap<>());
+ }
+}
diff --git a/app/src/main/java/com/fongmi/bear/utils/Notify.java b/app/src/main/java/com/fongmi/bear/utils/Notify.java
index d8074c0c2..4124468a4 100644
--- a/app/src/main/java/com/fongmi/bear/utils/Notify.java
+++ b/app/src/main/java/com/fongmi/bear/utils/Notify.java
@@ -13,7 +13,7 @@ import androidx.appcompat.app.AlertDialog;
import com.fongmi.bear.App;
import com.fongmi.bear.R;
-import com.fongmi.bear.databinding.DialogProgressBinding;
+import com.fongmi.bear.databinding.ViewProgressBinding;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class Notify {
@@ -54,7 +54,7 @@ public class Notify {
}
public static void progress(Context context) {
- DialogProgressBinding binding = DialogProgressBinding.inflate(LayoutInflater.from(context));
+ ViewProgressBinding binding = ViewProgressBinding.inflate(LayoutInflater.from(context));
get().mProgress = new MaterialAlertDialogBuilder(context).setView(binding.getRoot()).create();
get().mProgress.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
get().mProgress.show();
diff --git a/app/src/main/java/com/github/catvod/crawler/JarLoader.java b/app/src/main/java/com/github/catvod/crawler/JarLoader.java
index b64cae4d5..c9440f1c5 100644
--- a/app/src/main/java/com/github/catvod/crawler/JarLoader.java
+++ b/app/src/main/java/com/github/catvod/crawler/JarLoader.java
@@ -4,7 +4,6 @@ import android.content.Context;
import com.fongmi.bear.App;
import com.fongmi.bear.utils.FileUtil;
-import com.orhanobut.logger.Logger;
import org.json.JSONObject;
@@ -51,7 +50,7 @@ public class JarLoader {
if (classInit != null) {
Method method = classInit.getMethod("init", Context.class);
method.invoke(classInit, App.get());
- Logger.d("自定義爬蟲代碼加載成功!");
+ SpiderDebug.log("自定義爬蟲代碼加載成功!");
try {
Class> proxy = classLoader.loadClass("com.github.catvod.spider.Proxy");
proxyFun = proxy.getMethod("proxy", Map.class);
diff --git a/app/src/main/java/com/github/catvod/crawler/SpiderDebug.java b/app/src/main/java/com/github/catvod/crawler/SpiderDebug.java
index a81d4ae71..e7bf0e808 100644
--- a/app/src/main/java/com/github/catvod/crawler/SpiderDebug.java
+++ b/app/src/main/java/com/github/catvod/crawler/SpiderDebug.java
@@ -13,4 +13,8 @@ public class SpiderDebug {
public static void log(String msg) {
Logger.t(TAG).d(msg);
}
+
+ public static void json(String msg) {
+ Logger.t(TAG).json(msg);
+ }
}
diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml
index 1154778dc..bea68d8f8 100644
--- a/app/src/main/res/layout/activity_home.xml
+++ b/app/src/main/res/layout/activity_home.xml
@@ -6,7 +6,7 @@
@@ -48,8 +48,8 @@
android:textColor="@color/white"
android:textSize="24sp" />
-
@@ -60,6 +60,6 @@
android:layout_height="match_parent"
android:nestedScrollingEnabled="false" />
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
index 3a3f9e77f..97f5b07c8 100644
--- a/app/src/main/res/layout/activity_splash.xml
+++ b/app/src/main/res/layout/activity_splash.xml
@@ -20,31 +20,24 @@
tools:alpha="1" />
+ android:alpha="0"
+ android:gravity="center"
+ android:orientation="vertical"
+ tools:alpha="1">
-
+
+ android:textSize="18sp" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_vod.xml b/app/src/main/res/layout/activity_vod.xml
new file mode 100644
index 000000000..4cde95309
--- /dev/null
+++ b/app/src/main/res/layout/activity_vod.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_vod.xml b/app/src/main/res/layout/fragment_vod.xml
new file mode 100644
index 000000000..305887034
--- /dev/null
+++ b/app/src/main/res/layout/fragment_vod.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_progress.xml b/app/src/main/res/layout/view_progress.xml
similarity index 100%
rename from app/src/main/res/layout/dialog_progress.xml
rename to app/src/main/res/layout/view_progress.xml