Merge pull request #414 from okcaptain/dev

Dev
pull/415/head
okcaptain 2 years ago committed by GitHub
commit 40e5916058
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      app/build.gradle
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  3. 8
      app/src/main/java/com/fongmi/android/tv/Setting.java
  4. 2
      app/src/main/res/values-zh-rCN/strings.xml
  5. 2
      app/src/main/res/values-zh-rTW/strings.xml
  6. 2
      app/src/main/res/values/strings.xml
  7. 10
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java
  8. 59
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  9. 6
      app/src/mobile/res/layout/fragment_setting_custom.xml
  10. 41
      app/src/mobile/res/layout/fragment_vod.xml

@ -11,7 +11,7 @@ android {
minSdk 21
targetSdk 28
versionCode 233
versionName "0506"
versionName "0507"
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]

@ -487,7 +487,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
}
private RequestListener<Drawable> getListener() {
return new RequestListener<>() {
return new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, @NonNull Target<Drawable> target, boolean isFirstResource) {
mBinding.logo.setVisibility(View.GONE);

@ -424,12 +424,12 @@ public class Setting {
return Prefers.getInt("small_window_back_key", 0);
}
public static void putHomeChangeConfig(boolean change) {
Prefers.put("home_change_config", change);
public static void putHomeDisplayName(boolean change) {
Prefers.put("home_display_name", change);
}
public static boolean isHomeChangeConfig() {
return Prefers.getBoolean("home_change_config", false);
public static boolean isHomeDisplayName() {
return Prefers.getBoolean("home_display_name", false);
}
public static boolean isAggregatedSearch() {

@ -87,7 +87,7 @@
<string name="setting_home_site_lock">首页源锁定</string>
<string name="setting_incognito">无痕模式</string>
<string name="setting_small_window_back_key">小窗返回键</string>
<string name="setting_home_change_config">首页换线</string>
<string name="setting_home_display_name">首页显示站源名</string>
<string name="setting_home_ui">首页UI</string>
<string name="setting_home_buttons">首页按钮</string>
<string name="setting_doh">DoH</string>

@ -87,7 +87,7 @@
<string name="setting_home_site_lock">首頁源鎖定</string>
<string name="setting_incognito">無痕模式</string>
<string name="setting_small_window_back_key">小窗返回鍵</string>
<string name="setting_home_change_config">首頁換線</string>
<string name="setting_home_display_name">首頁显示站源名</string>
<string name="setting_home_ui">首頁UI</string>
<string name="setting_home_buttons">首頁按鈕</string>
<string name="setting_doh">DoH</string>

@ -87,7 +87,7 @@
<string name="setting_home_site_lock">Home site lock</string>
<string name="setting_incognito">Incognito mode</string>
<string name="setting_small_window_back_key">Small window back key</string>
<string name="setting_home_change_config">Home change config</string>
<string name="setting_home_display_name">Home display name</string>
<string name="setting_home_ui">Home ui style</string>
<string name="setting_home_buttons">Home buttons</string>
<string name="setting_doh">DoH</string>

@ -46,7 +46,7 @@ public class SettingCustomFragment extends BaseFragment {
mBinding.speedText.setText(getSpeedText());
mBinding.incognitoText.setText(getSwitch(Setting.isIncognito()));
mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch()));
mBinding.homeChangeConfigText.setText(getSwitch(Setting.isHomeChangeConfig()));
mBinding.homeDisplayNameText.setText(getSwitch(Setting.isHomeDisplayName()));
mBinding.languageText.setText((lang = ResUtil.getStringArray(R.array.select_language))[Setting.getLanguage()]);
}
@ -59,7 +59,7 @@ public class SettingCustomFragment extends BaseFragment {
mBinding.speed.setOnLongClickListener(this::resetSpeed);
mBinding.incognito.setOnClickListener(this::setIncognito);
mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch);
mBinding.homeChangeConfig.setOnClickListener(this::setHomeChangeConfig);
mBinding.homeDisplayName.setOnClickListener(this::setHomeDisplayName);
mBinding.language.setOnClickListener(this::setLanguage);
}
@ -111,9 +111,9 @@ public class SettingCustomFragment extends BaseFragment {
mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch()));
}
private void setHomeChangeConfig(View view) {
Setting.putHomeChangeConfig(!Setting.isHomeChangeConfig());
mBinding.homeChangeConfigText.setText(getSwitch(Setting.isHomeChangeConfig()));
private void setHomeDisplayName(View view) {
Setting.putHomeDisplayName(!Setting.isHomeDisplayName());
mBinding.homeDisplayNameText.setText(getSwitch(Setting.isHomeDisplayName()));
RefreshEvent.config();
}

@ -23,11 +23,13 @@ import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.bean.Class;
import com.fongmi.android.tv.bean.Config;
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.bean.Value;
@ -55,21 +57,31 @@ import com.fongmi.android.tv.utils.FileChooser;
import com.fongmi.android.tv.utils.FileUtil;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.ResUtil;
import com.github.catvod.net.OkHttp;
import com.github.catvod.utils.Trans;
import com.google.common.net.HttpHeaders;
import com.permissionx.guolindev.PermissionX;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.IOException;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
import okhttp3.Call;
import okhttp3.Headers;
import okhttp3.Response;
public class VodFragment extends BaseFragment implements SiteCallback, FilterCallback, TypeAdapter.OnClickListener, ConfigCallback {
private FragmentVodBinding mBinding;
private SiteViewModel mViewModel;
private TypeAdapter mAdapter;
private Runnable mRunnable;
private List<String> mHots;
private Result mResult;
public static VodFragment newInstance() {
@ -93,8 +105,11 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
protected void initView() {
EventBus.getDefault().register(this);
setRecyclerView();
setAppBarView();
setViewModel();
showProgress();
initHot();
getHot();
}
@Override
@ -103,11 +118,13 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
mBinding.link.setOnClickListener(this::onLink);
mBinding.logo.setOnClickListener(this::onLogo);
mBinding.logo.setOnLongClickListener(this::onRefresh);
mBinding.hot.setOnClickListener(this::onHot);
mBinding.site.setOnClickListener(this::onSite);
mBinding.keep.setOnClickListener(this::onKeep);
mBinding.retry.setOnClickListener(this::onRetry);
mBinding.filter.setOnClickListener(this::onFilter);
mBinding.search.setOnClickListener(this::onSearch);
mBinding.searchIcon.setOnClickListener(this::onSearchIcon);
mBinding.history.setOnClickListener(this::onHistory);
mBinding.pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
@ -124,6 +141,12 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
mBinding.site.setText(site);
}
private void setAppBarView() {
mBinding.searchInput.setVisibility(Setting.isHomeDisplayName() ? View.GONE : View.VISIBLE);
mBinding.siteView.setVisibility(Setting.isHomeDisplayName() ? View.VISIBLE : View.GONE);
mBinding.searchIcon.setVisibility(Setting.isHomeDisplayName() ? View.VISIBLE : View.GONE);
}
private void setRecyclerView() {
mBinding.type.setHasFixedSize(true);
mBinding.type.setItemAnimator(null);
@ -136,6 +159,26 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
mViewModel.result.observe(getViewLifecycleOwner(), result -> setAdapter(mResult = result));
}
private void initHot() {
mHots = Hot.get(Setting.getHot());
App.post(mRunnable = this::updateHot, 0);
}
private void getHot() {
OkHttp.newCall("https://api.web.360kan.com/v1/rank?cat=1", Headers.of(HttpHeaders.REFERER, "https://www.360kan.com/rank/general")).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 SecureRandom().nextInt(11)));
}
private Result handle(Result result) {
List<Class> types = new ArrayList<>();
for (Class type : result.getTypes()) if (result.getFilters().containsKey(type.getTypeId())) type.setFilters(result.getFilters().get(type.getTypeId()));
@ -184,7 +227,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
}
private void onLogo(View view) {
if (Setting.isHomeChangeConfig()) HistoryDialog.create(this).type(0).show();
if (Setting.isHomeDisplayName()) HistoryDialog.create(this).type(0).show();
else SiteDialog.create(this).change().show();
}
@ -214,8 +257,16 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
if (mAdapter.getItemCount() > 0) FilterDialog.create().filter(mAdapter.get(mBinding.pager.getCurrentItem()).getFilters()).show(this);
}
private void onHot(View view) {
CollectActivity.start(getActivity());
}
private void onSearch(View view) {
CollectActivity.start(getActivity(), "");
CollectActivity.start(getActivity(), mBinding.hot.getText().toString());
}
private void onSearchIcon(View view) {
CollectActivity.start(getActivity());
}
private void onHistory(View view) {
@ -245,7 +296,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
}
private RequestListener<Drawable> getListener() {
return new RequestListener<>() {
return new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, @NonNull Target<Drawable> target, boolean isFirstResource) {
mBinding.logo.getLayoutParams().width = ResUtil.dp2px(24);
@ -319,6 +370,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
homeContent();
break;
case CONFIG:
setAppBarView();
setLogo();
break;
}
@ -380,6 +432,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
@Override
public void onDestroyView() {
super.onDestroyView();
App.removeCallbacks(mRunnable);
EventBus.getDefault().unregister(this);
}

@ -180,7 +180,7 @@
</LinearLayout>
<LinearLayout
android:id="@+id/homeChangeConfig"
android:id="@+id/homeDisplayName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
@ -191,12 +191,12 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_home_change_config"
android:text="@string/setting_home_display_name"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/homeChangeConfigText"
android:id="@+id/homeDisplayNameText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"

@ -32,13 +32,15 @@
android:src="@drawable/ic_logo" />
<LinearLayout
android:id="@+id/siteView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/site"
@ -55,13 +57,46 @@
</LinearLayout>
<LinearLayout
android:id="@+id/searchInput"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="12dp"
android:layout_weight="1"
android:background="@drawable/selector_item_round"
android:gravity="center_vertical"
android:orientation="horizontal"
android:visibility="visible">
<TextView
android:id="@+id/hot"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:layout_weight="1"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:ignore="NestedWeights"
tools:text="狂飆" />
<ImageView
android:id="@+id/search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_search" />
</LinearLayout>
<ImageView
android:id="@+id/search"
android:id="@+id/searchIcon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="12dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_action_search" />
android:src="@drawable/ic_action_search"
android:visibility="gone" />
<ImageView
android:id="@+id/keep"

Loading…
Cancel
Save