[mobile] support home hots show

pull/123/head
FongMi 3 years ago
parent ab91700b9a
commit c4958eb438
  1. 5
      app/src/main/java/com/fongmi/android/tv/bean/Hot.java
  2. 8
      app/src/main/java/com/fongmi/android/tv/utils/Prefers.java
  3. 9
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/CollectActivity.java
  4. 24
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  5. 37
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  6. 2
      app/src/mobile/res/layout/fragment_vod.xml

@ -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<String> 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<>();
}
}

@ -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");
}

@ -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<String> items = Hot.get(response.body().string());
App.post(() -> mWordAdapter.addAll(items));
}
});
mWordAdapter.addAll(Hot.get(Prefers.getHot()));
}
private void getSuggest(String text) {

@ -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);

@ -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<String> 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);
}

@ -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"

Loading…
Cancel
Save