dialog background,aggregated search,default speed

pull/265/head
okjack 2 years ago
parent d8cc71810a
commit 5cedb2fbed
  1. 24
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java
  2. 1
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  3. 12
      app/src/leanback/java/com/fongmi/android/tv/ui/dialog/EpisodeDialog.java
  4. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  5. 11
      app/src/leanback/res/drawable/shape_trans_bottom_sheet.xml
  6. 58
      app/src/leanback/res/layout/activity_setting_custom.xml
  7. 14
      app/src/leanback/res/values/styles.xml
  8. 16
      app/src/main/java/com/fongmi/android/tv/Setting.java
  9. 2
      app/src/main/res/values-zh-rCN/strings.xml
  10. 2
      app/src/main/res/values-zh-rTW/strings.xml
  11. 2
      app/src/main/res/values/strings.xml
  12. 1
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  13. 24
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingCustomFragment.java
  14. 4
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java
  15. 54
      app/src/mobile/res/layout/fragment_setting_custom.xml

@ -42,6 +42,8 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.displayTimeText.setText(getSwitch(Setting.isDisplayTime()));
mBinding.displayNetspeedText.setText(getSwitch(Setting.isDisplaySpeed()));
mBinding.displayDurationText.setText(getSwitch(Setting.isDisplayDuration()));
mBinding.speedText.setText(Setting.getPlaySpeed() + "x");
mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch()));
}
@Override
@ -52,6 +54,9 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.displayTime.setOnClickListener(this::setDisplayTime);
mBinding.displayNetspeed.setOnClickListener(this::setDisplaySpeed);
mBinding.displayDuration.setOnClickListener(this::setDisplayDuration);
mBinding.speed.setOnClickListener(this::setSpeed);
mBinding.speed.setOnLongClickListener(this::resetSpeed);
mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch);
}
private void setQuality(View view) {
@ -89,4 +94,23 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.displayDurationText.setText(getSwitch(Setting.isDisplayDuration()));
}
private void setSpeed(View view) {
float speed = Setting.getPlaySpeed();
float addon = speed >= 2 ? 1f : 0.25f;
speed = speed >= 5 ? 0.25f : Math.min(speed + addon, 5.0f);
Setting.putPlaySpeed(speed);
mBinding.speedText.setText(Setting.getPlaySpeed() + "x");
}
private boolean resetSpeed(View view) {
Setting.putPlaySpeed(1.0f);
mBinding.speedText.setText(Setting.getPlaySpeed() + "x");
return true;
}
private void setAggregatedSearch(View view) {
Setting.putAggregatedSearch(!Setting.isAggregatedSearch());
mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch()));
}
}

@ -1195,6 +1195,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
history.setVodPic(item.getVodPic());
history.setVodName(item.getVodName());
history.findEpisode(item.getVodFlags());
history.setSpeed(Setting.getPlaySpeed());
return history;
}

@ -1,5 +1,7 @@
package com.fongmi.android.tv.ui.dialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
@ -15,12 +17,14 @@ import androidx.leanback.widget.ItemBridgeAdapter;
import androidx.leanback.widget.OnChildViewHolderSelectedListener;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.databinding.DialogEpisodeBinding;
import com.fongmi.android.tv.ui.activity.VideoActivity;
import com.fongmi.android.tv.ui.presenter.ArrayPresenter;
import com.fongmi.android.tv.ui.presenter.EpisodePresenter;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import java.util.ArrayList;
@ -38,6 +42,14 @@ public class EpisodeDialog extends BaseDialog implements ArrayPresenter.OnClickL
private ArrayPresenter mArrayPresenter;
private int groupSize;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
setStyle(STYLE_NORMAL, R.style.TransBottomSheetDialog);
BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
return dialog;
}
public static EpisodeDialog create() {
return new EpisodeDialog();
}

@ -19,6 +19,7 @@ import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Product;
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.Filter;
import com.fongmi.android.tv.bean.Page;
@ -282,7 +283,8 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
mBinding.recycler.setMoveTop(false);
getVideo(item.getVodId(), "1");
} else {
if (!isFolder()) VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic());
if (Setting.isAggregatedSearch()) CollectActivity.start(getActivity(), item.getVodName());
else if (!isFolder()) VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic());
else VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), item.getVodName());
}
}

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/black_20" />
<corners
android:topLeftRadius="12dp"
android:topRightRadius="12dp" />
</shape>

@ -188,5 +188,63 @@
</LinearLayout>
<LinearLayout
android:id="@+id/speed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/play_speed"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/speedText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="x1" />
</LinearLayout>
<LinearLayout
android:id="@+id/aggregatedSearch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_aggregated_search"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/aggregatedSearchText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="開" />
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

@ -32,4 +32,18 @@
<item name="bottomSheetStyle">@style/ModalBottomSheetDialog</item>
</style>
<style name="TransModalBottomSheetDialog" parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@drawable/shape_trans_bottom_sheet</item>
</style>
<style name="TransBottomSheetDialog" parent="Theme.MaterialComponents.Light.BottomSheetDialog">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
<item name="colorAccent">@color/accent</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowIsFloating">false</item>
<item name="bottomSheetStyle">@style/TransModalBottomSheetDialog</item>
</style>
</resources>

@ -365,4 +365,20 @@ public class Setting {
Prefers.put("display_duration", display);
}
public static float getPlaySpeed() {
return Prefers.getFloat("play_speed", 1.0f);
}
public static void putPlaySpeed(float speed) {
Prefers.put("play_speed", speed);
}
public static boolean isAggregatedSearch() {
return Prefers.getBoolean("aggregated_search", false);
}
public static void putAggregatedSearch(boolean search) {
Prefers.put("aggregated_search", search);
}
}

@ -40,6 +40,7 @@
<string name="play_netspeed">网速</string>
<string name="play_duration">进度</string>
<string name="play_danmu">弹幕</string>
<string name="play_speed">倍速</string>
<string name="play_change">换源</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
@ -74,6 +75,7 @@
<string name="setting_custom">个性设置</string>
<string name="setting_quality">图片品质</string>
<string name="setting_size">图片尺寸</string>
<string name="setting_aggregated_search">聚合搜索</string>
<string name="setting_doh">DoH</string>
<string name="setting_proxy">Proxy</string>
<string name="setting_cache">缓存</string>

@ -40,6 +40,7 @@
<string name="play_netspeed">網速</string>
<string name="play_duration">進度</string>
<string name="play_danmu">彈幕</string>
<string name="play_speed">倍速</string>
<string name="play_change">換源</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
@ -74,6 +75,7 @@
<string name="setting_custom">個性設定</string>
<string name="setting_quality">圖片品質</string>
<string name="setting_size">圖片尺寸</string>
<string name="setting_aggregated_search">聚合搜索</string>
<string name="setting_doh">DoH</string>
<string name="setting_proxy">Proxy</string>
<string name="setting_cache">暫存</string>

@ -40,6 +40,7 @@
<string name="play_netspeed">Net Speed</string>
<string name="play_duration">Duration</string>
<string name="play_danmu">Danmu</string>
<string name="play_speed">Speed</string>
<string name="play_change">Change</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
@ -74,6 +75,7 @@
<string name="setting_custom">Custom setting</string>
<string name="setting_quality">Image quality</string>
<string name="setting_size">Image size</string>
<string name="setting_aggregated_search">Aggregated search</string>
<string name="setting_doh">DoH</string>
<string name="setting_proxy">Proxy</string>
<string name="setting_cache">Cache</string>

@ -1134,6 +1134,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
history.setVodPic(item.getVodPic());
history.setVodName(item.getVodName());
history.findEpisode(item.getVodFlags());
history.setSpeed(Setting.getPlaySpeed());
return history;
}

@ -38,6 +38,8 @@ public class SettingCustomFragment extends BaseFragment {
protected void initView() {
mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Setting.getSize()]);
mBinding.danmuSyncText.setText(getSwitch(Setting.isDanmuSync()));
mBinding.speedText.setText(Setting.getPlaySpeed() + "x");
mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch()));
}
@Override
@ -45,6 +47,9 @@ public class SettingCustomFragment extends BaseFragment {
mBinding.title.setOnLongClickListener(this::onTitle);
mBinding.size.setOnClickListener(this::setSize);
mBinding.danmuSync.setOnClickListener(this::setDanmuSync);
mBinding.speed.setOnClickListener(this::setSpeed);
mBinding.speed.setOnLongClickListener(this::resetSpeed);
mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch);
}
private boolean onTitle(View view) {
@ -66,5 +71,24 @@ public class SettingCustomFragment extends BaseFragment {
mBinding.danmuSyncText.setText(getSwitch(Setting.isDanmuSync()));
}
private void setSpeed(View view) {
float speed = Setting.getPlaySpeed();
float addon = speed >= 2 ? 1f : 0.25f;
speed = speed >= 5 ? 0.25f : Math.min(speed + addon, 5.0f);
Setting.putPlaySpeed(speed);
mBinding.speedText.setText(Setting.getPlaySpeed() + "x");
}
private boolean resetSpeed(View view) {
Setting.putPlaySpeed(1.0f);
mBinding.speedText.setText(Setting.getPlaySpeed() + "x");
return true;
}
private void setAggregatedSearch(View view) {
Setting.putAggregatedSearch(!Setting.isAggregatedSearch());
mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch()));
}
}

@ -12,6 +12,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.Product;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.bean.Page;
@ -221,7 +222,8 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
mPages.add(Page.get(item, findPosition()));
getVideo(item.getVodId(), "1");
} else {
if (item.isManga()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic());
if (Setting.isAggregatedSearch()) CollectActivity.start(getActivity(), item.getVodName());
else if (item.isManga()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic());
else VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), isFolder() ? item.getVodName() : null, false);
}
}

@ -99,6 +99,60 @@
</LinearLayout>
<LinearLayout
android:id="@+id/speed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/shape_item"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/play_speed"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/speedText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="x1" />
</LinearLayout>
<LinearLayout
android:id="@+id/aggregatedSearch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/shape_item"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/setting_aggregated_search"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/aggregatedSearchText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="開" />
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Loading…
Cancel
Save