Delete HomeActivity.java

pull/1/head
Kimlee-cmd 4 years ago committed by GitHub
parent c666c66dc8
commit be739bf8e8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 526
      app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java

@ -1,526 +0,0 @@
package com.github.tvbox.osc.ui.activity;
import android.Manifest;
import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.IntEvaluator;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.BounceInterpolator;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.viewpager.widget.ViewPager;
import com.github.tvbox.osc.R;
import com.github.tvbox.osc.api.ApiConfig;
import com.github.tvbox.osc.base.BaseActivity;
import com.github.tvbox.osc.base.BaseLazyFragment;
import com.github.tvbox.osc.bean.AbsSortXml;
import com.github.tvbox.osc.bean.MovieSort;
import com.github.tvbox.osc.event.RefreshEvent;
import com.github.tvbox.osc.server.ControlManager;
import com.github.tvbox.osc.ui.adapter.HomePageAdapter;
import com.github.tvbox.osc.ui.adapter.SortAdapter;
import com.github.tvbox.osc.ui.dialog.TipDialog;
import com.github.tvbox.osc.ui.fragment.GridFragment;
import com.github.tvbox.osc.ui.fragment.UserFragment;
import com.github.tvbox.osc.ui.tv.widget.DefaultTransformer;
import com.github.tvbox.osc.ui.tv.widget.FixedSpeedScroller;
import com.github.tvbox.osc.ui.tv.widget.NoScrollViewPager;
import com.github.tvbox.osc.ui.tv.widget.ViewObj;
import com.github.tvbox.osc.util.AppManager;
import com.github.tvbox.osc.util.DefaultConfig;
import com.github.tvbox.osc.util.HawkConfig;
import com.github.tvbox.osc.util.LOG;
import com.github.tvbox.osc.viewmodel.SourceViewModel;
import com.orhanobut.hawk.Hawk;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import me.jessyan.autosize.utils.AutoSizeUtils;
public class HomeActivity extends BaseActivity {
private LinearLayout topLayout;
private LinearLayout contentLayout;
private TextView tvDate;
private TvRecyclerView mGridView;
private NoScrollViewPager mViewPager;
private SourceViewModel sourceViewModel;
private SortAdapter sortAdapter;
private HomePageAdapter pageAdapter;
private List<BaseLazyFragment> fragments = new ArrayList<>();
private boolean isDownOrUp = false;
private boolean sortChange = false;
private int currentSelected = 0;
private int sortFocused = 0;
public View sortFocusView = null;
private Handler mHandler = new Handler();
private long mExitTime = 0;
private Runnable mRunnable = new Runnable() {
@SuppressLint({"DefaultLocale", "SetTextI18n"})
@Override
public void run() {
Date date = new Date();
@SuppressLint("SimpleDateFormat")
SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm");
tvDate.setText(timeFormat.format(date));
mHandler.postDelayed(this, 1000);
}
};
@Override
protected int getLayoutResID() {
return R.layout.activity_home;
}
boolean useCacheConfig = false;
@Override
protected void init() {
EventBus.getDefault().register(this);
ControlManager.get().startServer();
initView();
initViewModel();
useCacheConfig = false;
Intent intent = getIntent();
if (intent != null && intent.getExtras() != null) {
Bundle bundle = intent.getExtras();
useCacheConfig = bundle.getBoolean("useCache", false);
}
initData();
}
private void initView() {
this.topLayout = findViewById(R.id.topLayout);
this.tvDate = findViewById(R.id.tvDate);
this.contentLayout = findViewById(R.id.contentLayout);
this.mGridView = findViewById(R.id.mGridView);
this.mViewPager = findViewById(R.id.mViewPager);
this.sortAdapter = new SortAdapter();
this.mGridView.setLayoutManager(new V7LinearLayoutManager(this.mContext, 0, false));
this.mGridView.setSpacingWithMargins(0, AutoSizeUtils.dp2px(this.mContext, 10.0f));
this.mGridView.setAdapter(this.sortAdapter);
this.mGridView.setOnItemListener(new TvRecyclerView.OnItemListener() {
public void onItemPreSelected(TvRecyclerView tvRecyclerView, View view, int position) {
if (view != null && !HomeActivity.this.isDownOrUp) {
view.animate().scaleX(1.0f).scaleY(1.0f).setDuration(300).start();
TextView textView = view.findViewById(R.id.tvTitle);
textView.getPaint().setFakeBoldText(false);
textView.setTextColor(HomeActivity.this.getResources().getColor(R.color.color_BBFFFFFF));
textView.invalidate();
view.findViewById(R.id.tvFilter).setVisibility(View.GONE);
}
}
public void onItemSelected(TvRecyclerView tvRecyclerView, View view, int position) {
if (view != null) {
HomeActivity.this.isDownOrUp = false;
HomeActivity.this.sortChange = true;
view.animate().scaleX(1.1f).scaleY(1.1f).setInterpolator(new BounceInterpolator()).setDuration(300).start();
TextView textView = view.findViewById(R.id.tvTitle);
textView.getPaint().setFakeBoldText(true);
textView.setTextColor(HomeActivity.this.getResources().getColor(R.color.color_FFFFFF));
textView.invalidate();
if (!sortAdapter.getItem(position).filters.isEmpty())
view.findViewById(R.id.tvFilter).setVisibility(View.VISIBLE);
HomeActivity.this.sortFocusView = view;
HomeActivity.this.sortFocused = position;
mHandler.removeCallbacks(mDataRunnable);
mHandler.postDelayed(mDataRunnable, 200);
}
}
@Override
public void onItemClick(TvRecyclerView parent, View itemView, int position) {
if (itemView != null && currentSelected == position && !sortAdapter.getItem(position).filters.isEmpty()) { // 弹出筛选
BaseLazyFragment baseLazyFragment = fragments.get(currentSelected);
if ((baseLazyFragment instanceof GridFragment)) {
((GridFragment) baseLazyFragment).showFilter();
}
}
}
});
this.mGridView.setOnInBorderKeyEventListener(new TvRecyclerView.OnInBorderKeyEventListener() {
public final boolean onInBorderKeyEvent(int direction, View view) {
if (direction != View.FOCUS_DOWN) {
return false;
}
isDownOrUp = true;
BaseLazyFragment baseLazyFragment = fragments.get(sortFocused);
if (!(baseLazyFragment instanceof GridFragment)) {
return false;
}
if (!((GridFragment) baseLazyFragment).isLoad()) {
return true;
}
return false;
}
});
setLoadSir(this.contentLayout);
//mHandler.postDelayed(mFindFocus, 500);
}
private void initViewModel() {
sourceViewModel = new ViewModelProvider(this).get(SourceViewModel.class);
sourceViewModel.sortResult.observe(this, new Observer<AbsSortXml>() {
@Override
public void onChanged(AbsSortXml absXml) {
showSuccess();
if (absXml != null && absXml.classes != null && absXml.classes.sortList != null) {
sortAdapter.setNewData(DefaultConfig.adjustSort(ApiConfig.get().getHomeSourceBean().getKey(), absXml.classes.sortList, true));
} else {
sortAdapter.setNewData(DefaultConfig.adjustSort(ApiConfig.get().getHomeSourceBean().getKey(), new ArrayList<>(), true));
}
initViewPager(absXml);
}
});
}
private boolean dataInitOk = false;
private boolean jarInitOk = false;
private void initData() {
if (dataInitOk && jarInitOk) {
showLoading();
sourceViewModel.getSort(ApiConfig.get().getHomeSourceBean().getKey());
if (hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
LOG.e("有");
} else {
LOG.e("无");
}
return;
}
showLoading();
if (dataInitOk && !jarInitOk) {
if (!ApiConfig.get().getSpider().isEmpty()) {
ApiConfig.get().loadJar(useCacheConfig, ApiConfig.get().getSpider(), new ApiConfig.LoadConfigCallback() {
@Override
public void success() {
jarInitOk = true;
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (!useCacheConfig)
Toast.makeText(HomeActivity.this, "自定义jar加载成功", Toast.LENGTH_SHORT).show();
initData();
}
}, 50);
}
@Override
public void retry() {
}
@Override
public void error(String msg) {
jarInitOk = true;
mHandler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(HomeActivity.this, "jar加载失败", Toast.LENGTH_SHORT).show();
initData();
}
});
}
});
}
return;
}
ApiConfig.get().loadConfig(useCacheConfig, new ApiConfig.LoadConfigCallback() {
TipDialog dialog = null;
@Override
public void retry() {
mHandler.post(new Runnable() {
@Override
public void run() {
initData();
}
});
}
@Override
public void success() {
dataInitOk = true;
if (ApiConfig.get().getSpider().isEmpty()) {
jarInitOk = true;
}
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
initData();
}
}, 50);
}
@Override
public void error(String msg) {
if (msg.equalsIgnoreCase("-1")) {
mHandler.post(new Runnable() {
@Override
public void run() {
dataInitOk = true;
jarInitOk = true;
initData();
}
});
return;
}
mHandler.post(new Runnable() {
@Override
public void run() {
if (dialog == null)
dialog = new TipDialog(HomeActivity.this, msg, "重试", "取消", new TipDialog.OnListener() {
@Override
public void left() {
mHandler.post(new Runnable() {
@Override
public void run() {
initData();
dialog.hide();
}
});
}
@Override
public void right() {
dataInitOk = true;
jarInitOk = true;
mHandler.post(new Runnable() {
@Override
public void run() {
initData();
dialog.hide();
}
});
}
@Override
public void cancel() {
dataInitOk = true;
jarInitOk = true;
mHandler.post(new Runnable() {
@Override
public void run() {
initData();
dialog.hide();
}
});
}
});
if (!dialog.isShowing())
dialog.show();
}
});
}
}, this);
}
private void initViewPager(AbsSortXml absXml) {
if (sortAdapter.getData().size() > 0) {
for (MovieSort.SortData data : sortAdapter.getData()) {
if (data.id.equals("my0")) {
if (Hawk.get(HawkConfig.HOME_REC, 0) == 1 && absXml != null && absXml.videoList != null && absXml.videoList.size() > 0) {
fragments.add(UserFragment.newInstance(absXml.videoList));
} else {
fragments.add(UserFragment.newInstance(null));
}
} else {
fragments.add(GridFragment.newInstance(data));
}
}
pageAdapter = new HomePageAdapter(getSupportFragmentManager(), fragments);
try {
Field field = ViewPager.class.getDeclaredField("mScroller");
field.setAccessible(true);
FixedSpeedScroller scroller = new FixedSpeedScroller(mContext, new AccelerateInterpolator());
field.set(mViewPager, scroller);
scroller.setmDuration(300);
} catch (Exception e) {
}
mViewPager.setPageTransformer(true, new DefaultTransformer());
mViewPager.setAdapter(pageAdapter);
mViewPager.setCurrentItem(currentSelected, false);
}
}
@Override
public void onBackPressed() {
int i;
if (this.fragments.size() <= 0 || this.sortFocused >= this.fragments.size() || (i = this.sortFocused) < 0) {
exit();
return;
}
BaseLazyFragment baseLazyFragment = this.fragments.get(i);
if (baseLazyFragment instanceof GridFragment) {
View view = this.sortFocusView;
if (view != null && !view.isFocused()) {
this.sortFocusView.requestFocus();
} else if (this.sortFocused != 0) {
this.mGridView.setSelection(0);
} else {
exit();
}
} else {
exit();
}
}
private void exit() {
if (System.currentTimeMillis() - mExitTime < 2000) {
super.onBackPressed();
} else {
mExitTime = System.currentTimeMillis();
Toast.makeText(mContext, "再按一次返回键退出应用", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onResume() {
super.onResume();
mHandler.post(mRunnable);
}
@Override
protected void onPause() {
super.onPause();
mHandler.removeCallbacksAndMessages(null);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void refresh(RefreshEvent event) {
if (event.type == RefreshEvent.TYPE_PUSH_URL) {
if (ApiConfig.get().getSource("push_agent") != null) {
Intent newIntent = new Intent(mContext, DetailActivity.class);
newIntent.putExtra("id", (String) event.obj);
newIntent.putExtra("sourceKey", "push_agent");
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
HomeActivity.this.startActivity(newIntent);
}
}
}
private Runnable mDataRunnable = new Runnable() {
@Override
public void run() {
if (sortChange) {
sortChange = false;
if (sortFocused != currentSelected) {
currentSelected = sortFocused;
mViewPager.setCurrentItem(sortFocused, false);
if (sortFocused == 0) {
changeTop(false);
} else {
changeTop(true);
}
}
}
}
};
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (topHide < 0)
return false;
if (event.getAction() == KeyEvent.ACTION_DOWN) {
} else if (event.getAction() == KeyEvent.ACTION_UP) {
}
return super.dispatchKeyEvent(event);
}
byte topHide = 0;
private void changeTop(boolean hide) {
ViewObj viewObj = new ViewObj(topLayout, (ViewGroup.MarginLayoutParams) topLayout.getLayoutParams());
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
topHide = (byte) (hide ? 1 : 0);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
if (hide && topHide == 0) {
animatorSet.playTogether(new Animator[]{
ObjectAnimator.ofObject(viewObj, "marginTop", new IntEvaluator(),
new Object[]{
Integer.valueOf(AutoSizeUtils.mm2px(this.mContext, 10.0f)),
Integer.valueOf(AutoSizeUtils.mm2px(this.mContext, 0.0f))
}),
ObjectAnimator.ofObject(viewObj, "height", new IntEvaluator(),
new Object[]{
Integer.valueOf(AutoSizeUtils.mm2px(this.mContext, 50.0f)),
Integer.valueOf(AutoSizeUtils.mm2px(this.mContext, 1.0f))
}),
ObjectAnimator.ofFloat(this.topLayout, "alpha", new float[]{1.0f, 0.0f})});
animatorSet.setDuration(200);
animatorSet.start();
return;
}
if (!hide && topHide == 1) {
animatorSet.playTogether(new Animator[]{
ObjectAnimator.ofObject(viewObj, "marginTop", new IntEvaluator(),
new Object[]{
Integer.valueOf(AutoSizeUtils.mm2px(this.mContext, 0.0f)),
Integer.valueOf(AutoSizeUtils.mm2px(this.mContext, 10.0f))
}),
ObjectAnimator.ofObject(viewObj, "height", new IntEvaluator(),
new Object[]{
Integer.valueOf(AutoSizeUtils.mm2px(this.mContext, 1.0f)),
Integer.valueOf(AutoSizeUtils.mm2px(this.mContext, 50.0f))
}),
ObjectAnimator.ofFloat(this.topLayout, "alpha", new float[]{0.0f, 1.0f})});
animatorSet.setDuration(200);
animatorSet.start();
return;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
AppManager.getInstance().appExit(0);
ControlManager.get().stopServer();
}
}
Loading…
Cancel
Save