diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Hot.java b/app/src/main/java/com/fongmi/android/tv/bean/Hot.java index e0a94cb08..d870b2925 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Hot.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Hot.java @@ -1,10 +1,10 @@ package com.fongmi.android.tv.bean; +import com.fongmi.android.tv.utils.Prefers; import com.google.gson.Gson; import com.google.gson.annotations.SerializedName; import java.util.ArrayList; -import java.util.Collections; import java.util.List; public class Hot { @@ -20,9 +20,10 @@ public class Hot { try { List items = new ArrayList<>(); for (Data item : objectFrom(str).getData()) items.add(item.getTitle()); + Prefers.putHot(str); return items; } catch (Exception e) { - return Collections.emptyList(); + return new ArrayList<>(); } } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java b/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java index 0496b20dd..d79abd049 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Prefers.java @@ -131,6 +131,14 @@ public class Prefers { put("keyword", keyword); } + public static String getHot() { + return getString("hot"); + } + + public static void putHot(String hot) { + put("hot", hot); + } + public static int getScale() { return getInt("scale"); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java index b0e210987..f329a8c2d 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java @@ -38,6 +38,7 @@ import com.fongmi.android.tv.ui.custom.CustomListener; import com.fongmi.android.tv.ui.custom.ViewType; import com.fongmi.android.tv.ui.custom.dialog.SiteDialog; import com.fongmi.android.tv.utils.PauseThreadPoolExecutor; +import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Utils; @@ -179,13 +180,7 @@ public class CollectActivity extends BaseActivity implements SiteCallback, WordA private void getHot() { mBinding.word.setText(R.string.search_hot); - OkHttp.newCall("https://api.web.360kan.com/v1/rank?cat=1").enqueue(new Callback() { - @Override - public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { - List items = Hot.get(response.body().string()); - App.post(() -> mWordAdapter.addAll(items)); - } - }); + mWordAdapter.addAll(Hot.get(Prefers.getHot())); } private void getSuggest(String text) { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 973b200f9..c989b316c 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -158,18 +158,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis return getCallingActivity() != null && getCallingActivity().getShortClassName().contains(CollectActivity.class.getSimpleName()); } - private int getLockOrient() { - if (isLock()) { - return ResUtil.isLand(this) ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT; - } else if (isRotate()) { - return ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT; - } else if (Utils.isAutoRotate()) { - return ActivityInfo.SCREEN_ORIENTATION_FULL_USER; - } else { - return ResUtil.isLand(this) ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT; - } - } - @Override protected ViewBinding getBinding() { return mBinding = ActivityDetailBinding.inflate(getLayoutInflater()); @@ -600,6 +588,18 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis hideControl(); } + private int getLockOrient() { + if (isLock()) { + return ResUtil.isLand(this) ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT; + } else if (isRotate()) { + return ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT; + } else if (Utils.isAutoRotate()) { + return ActivityInfo.SCREEN_ORIENTATION_FULL_USER; + } else { + return ResUtil.isLand(this) ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT; + } + } + private void showProgress() { mBinding.widget.progress.setVisibility(View.VISIBLE); App.post(mR2, 0); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java index 4866a1aba..6ce38ce29 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java @@ -12,14 +12,18 @@ import androidx.fragment.app.FragmentStatePagerAdapter; import androidx.viewbinding.ViewBinding; import androidx.viewpager.widget.ViewPager; +import com.fongmi.android.tv.App; import com.fongmi.android.tv.api.ApiConfig; import com.fongmi.android.tv.bean.Class; +import com.fongmi.android.tv.bean.Hot; import com.fongmi.android.tv.bean.Result; import com.fongmi.android.tv.bean.Site; import com.fongmi.android.tv.databinding.FragmentVodBinding; import com.fongmi.android.tv.event.RefreshEvent; import com.fongmi.android.tv.impl.FilterCallback; import com.fongmi.android.tv.impl.SiteCallback; +import com.fongmi.android.tv.net.Callback; +import com.fongmi.android.tv.net.OkHttp; import com.fongmi.android.tv.ui.activity.CollectActivity; import com.fongmi.android.tv.ui.activity.HistoryActivity; import com.fongmi.android.tv.ui.activity.KeepActivity; @@ -30,19 +34,27 @@ import com.fongmi.android.tv.ui.custom.dialog.LinkDialog; import com.fongmi.android.tv.ui.custom.dialog.SiteDialog; import com.fongmi.android.tv.ui.fragment.child.HomeFragment; import com.fongmi.android.tv.ui.fragment.child.TypeFragment; +import com.fongmi.android.tv.utils.Prefers; import com.google.android.material.bottomsheet.BottomSheetDialogFragment; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Random; + +import okhttp3.Call; +import okhttp3.Response; public class VodFragment extends BaseFragment implements SiteCallback, FilterCallback, TypeAdapter.OnClickListener { private FragmentVodBinding mBinding; private TypeAdapter mAdapter; + private Runnable mRunnable; + private List mHots; public static VodFragment newInstance() { return new VodFragment(); @@ -65,6 +77,8 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal protected void initView() { EventBus.getDefault().register(this); setRecyclerView(); + initHot(); + getHot(); } @Override @@ -92,6 +106,26 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal mBinding.type.setAdapter(mAdapter = new TypeAdapter(this)); } + private void initHot() { + mHots = Hot.get(Prefers.getHot()); + App.post(mRunnable = this::updateHot, 0); + } + + private void getHot() { + OkHttp.newCall("https://api.web.360kan.com/v1/rank?cat=1").enqueue(new Callback() { + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { + mHots = Hot.get(response.body().string()); + } + }); + } + + private void updateHot() { + App.post(mRunnable, 10 * 1000); + if (mHots.isEmpty() || mHots.size() < 10) return; + mBinding.hot.setText(mHots.get(new Random().nextInt(11))); + } + private void setFabVisible(int position) { if (position == 0) { mBinding.link.show(); @@ -128,7 +162,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal } private void onSearch(View view) { - CollectActivity.start(getActivity()); + CollectActivity.start(getActivity(), mBinding.hot.getText().toString()); } private void onHistory(View view) { @@ -199,6 +233,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal @Override public void onDestroyView() { super.onDestroyView(); + App.removeCallbacks(mRunnable); EventBus.getDefault().unregister(this); } diff --git a/app/src/mobile/res/layout/fragment_vod.xml b/app/src/mobile/res/layout/fragment_vod.xml index f4ab919f4..af8d18381 100644 --- a/app/src/mobile/res/layout/fragment_vod.xml +++ b/app/src/mobile/res/layout/fragment_vod.xml @@ -40,7 +40,7 @@ android:id="@+id/hot" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="8dp" + android:layout_marginEnd="4dp" android:layout_weight="1" android:singleLine="true" android:textColor="@color/white"