Merge pull request #351 from okcaptain/dev

Dev
pull/352/head^2
okcaptain 2 years ago committed by GitHub
commit 8cf0bc9102
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      app/build.gradle
  2. 3
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  3. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  4. 41
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingCustomActivity.java
  5. 93
      app/src/leanback/java/com/fongmi/android/tv/ui/adapter/DisplayAdapter.java
  6. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomTitleView.java
  7. 65
      app/src/leanback/java/com/fongmi/android/tv/ui/dialog/DisplayDialog.java
  8. 16
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/HomeFragment.java
  9. 103
      app/src/leanback/res/layout/activity_setting_custom.xml
  10. 42
      app/src/leanback/res/layout/adapter_display.xml
  11. 18
      app/src/leanback/res/layout/dialog_display.xml
  12. 8
      app/src/main/java/com/fongmi/android/tv/Setting.java
  13. 1
      app/src/main/res/values-zh-rCN/strings.xml
  14. 1
      app/src/main/res/values-zh-rTW/strings.xml
  15. 1
      app/src/main/res/values/strings.xml

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

@ -273,8 +273,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
@Override
public void onItemClick(Class item) {
if (mBinding.pager.getCurrentItem() == 0) {
if (!hasSettingButton()) MenuDialog.create(this).show();
else SiteDialog.create(this).show();
SiteDialog.create(this).show();
} else {
updateFilter(item);
}

@ -327,4 +327,10 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
mBinding.backupText.setText(AppDatabase.getDate());
return true;
}
@Override
protected void onDestroy() {
super.onDestroy();
RefreshEvent.history();
}
}

@ -12,6 +12,7 @@ import com.fongmi.android.tv.databinding.ActivitySettingCustomBinding;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.dialog.ButtonsDialog;
import com.fongmi.android.tv.ui.dialog.DisplayDialog;
import com.fongmi.android.tv.utils.ResUtil;
import java.util.Locale;
@ -46,10 +47,6 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.qualityText.setText((quality = ResUtil.getStringArray(R.array.select_quality))[Setting.getQuality()]);
mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Setting.getSize()]);
mBinding.episodeText.setText((episode = ResUtil.getStringArray(R.array.select_episode))[Setting.getEpisode()]);
mBinding.displayTimeText.setText(getSwitch(Setting.isDisplayTime()));
mBinding.displayNetspeedText.setText(getSwitch(Setting.isDisplaySpeed()));
mBinding.displayDurationText.setText(getSwitch(Setting.isDisplayDuration()));
mBinding.displayMiniProgressText.setText(getSwitch(Setting.isDisplayMiniProgress()));
mBinding.speedText.setText(getSpeedText());
mBinding.fullscreenMenuKeyText.setText((fullscreenMenuKey = ResUtil.getStringArray(R.array.select_fullscreen_menu_key))[Setting.getFullscreenMenuKey()]);
mBinding.homeSiteLockText.setText(getSwitch(Setting.isHomeSiteLock()));
@ -58,6 +55,7 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.homeMenuKeyText.setText((homeMenuKey = ResUtil.getStringArray(R.array.select_home_menu_key))[Setting.getHomeMenuKey()]);
mBinding.aggregatedSearchText.setText(getSwitch(Setting.isAggregatedSearch()));
mBinding.homeUIText.setText((homeUI = ResUtil.getStringArray(R.array.select_home_ui))[Setting.getHomeUI()]);
mBinding.homeHistoryText.setText(getSwitch(Setting.isHomeHistory()));
}
@Override
@ -65,10 +63,7 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.quality.setOnClickListener(this::setQuality);
mBinding.size.setOnClickListener(this::setSize);
mBinding.episode.setOnClickListener(this::setEpisode);
mBinding.displayTime.setOnClickListener(this::setDisplayTime);
mBinding.displayNetspeed.setOnClickListener(this::setDisplaySpeed);
mBinding.displayDuration.setOnClickListener(this::setDisplayDuration);
mBinding.displayMiniProgress.setOnClickListener(this::setDisplayMiniProgress);
mBinding.display.setOnClickListener(this::onDisplay);
mBinding.speed.setOnClickListener(this::setSpeed);
mBinding.speed.setOnLongClickListener(this::resetSpeed);
mBinding.fullscreenMenuKey.setOnClickListener(this::setFullscreenMenuKey);
@ -78,7 +73,8 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.homeMenuKey.setOnClickListener(this::setHomeMenuKey);
mBinding.aggregatedSearch.setOnClickListener(this::setAggregatedSearch);
mBinding.homeUI.setOnClickListener(this::setHomeUI);
mBinding.homeButtons.setOnClickListener(this::setHomeButtons);
mBinding.homeButtons.setOnClickListener(this::onHomeButtons);
mBinding.homeHistory.setOnClickListener(this::setHomeHistory);
}
private void setQuality(View view) {
@ -101,24 +97,8 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.episodeText.setText(episode[index]);
}
private void setDisplayTime(View view) {
Setting.putDisplayTime(!Setting.isDisplayTime());
mBinding.displayTimeText.setText(getSwitch(Setting.isDisplayTime()));
}
private void setDisplaySpeed(View view) {
Setting.putDisplaySpeed(!Setting.isDisplaySpeed());
mBinding.displayNetspeedText.setText(getSwitch(Setting.isDisplaySpeed()));
}
private void setDisplayDuration(View view) {
Setting.putDisplayDuration(!Setting.isDisplayDuration());
mBinding.displayDurationText.setText(getSwitch(Setting.isDisplayDuration()));
}
private void setDisplayMiniProgress(View view) {
Setting.putDisplayMiniProgress(!Setting.isDisplayMiniProgress());
mBinding.displayMiniProgressText.setText(getSwitch(Setting.isDisplayMiniProgress()));
private void onDisplay(View view) {
DisplayDialog.create(this).show();
}
private String getSpeedText() {
@ -178,8 +158,13 @@ public class SettingCustomActivity extends BaseActivity {
mBinding.homeUIText.setText(homeUI[index]);
}
private void setHomeButtons(View view) {
private void onHomeButtons(View view) {
ButtonsDialog.create(this).show();
}
private void setHomeHistory(View view) {
Setting.putHomeHistory(!Setting.isHomeHistory());
mBinding.homeHistoryText.setText(getSwitch(Setting.isHomeHistory()));
}
}

@ -0,0 +1,93 @@
package com.fongmi.android.tv.ui.adapter;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.databinding.AdapterDisplayBinding;
import com.fongmi.android.tv.utils.ResUtil;
import java.util.ArrayList;
import java.util.List;
public class DisplayAdapter extends RecyclerView.Adapter<DisplayAdapter.ViewHolder> {
private List<String> mItems;
public DisplayAdapter() {
mItems = new ArrayList<>();
mItems.add(ResUtil.getString(R.string.play_time));
mItems.add(ResUtil.getString(R.string.play_netspeed));
mItems.add(ResUtil.getString(R.string.play_duration));
mItems.add(ResUtil.getString(R.string.play_mini_progress));
}
@Override
public int getItemCount() {
return mItems.size();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(AdapterDisplayBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String name = mItems.get(position);
holder.binding.text.setText(name);
holder.binding.check.setChecked(getChecked(position));
holder.binding.select.setOnLongClickListener(v -> onItemLongClick(position));
holder.binding.select.setOnClickListener(v -> onItemClick(position));
holder.binding.text.setGravity(Gravity.CENTER);
}
private boolean getChecked(int position) {
if (position == 0) return Setting.isDisplayTime();
else if (position == 1) return Setting.isDisplaySpeed();
else if (position == 2) return Setting.isDisplayDuration();
else if (position == 3) return Setting.isDisplayMiniProgress();
return false;
}
private void onItemClick(int position) {
if (position == 0) Setting.putDisplayTime(!Setting.isDisplayTime());
else if (position == 1) Setting.putDisplaySpeed(!Setting.isDisplaySpeed());
else if (position == 2) Setting.putDisplayDuration(!Setting.isDisplayDuration());
else if (position == 3) Setting.putDisplayMiniProgress(!Setting.isDisplayMiniProgress());
notifyItemRangeChanged(0, getItemCount());
}
private boolean onItemLongClick(int position) {
boolean checked = false;
if (position == 0) checked = Setting.isDisplayTime();
else if (position == 1) checked = Setting.isDisplaySpeed();
else if (position == 2) checked = Setting.isDisplayDuration();
else if (position == 3) checked = Setting.isDisplayMiniProgress();
Setting.putDisplayTime(!checked);
Setting.putDisplaySpeed(!checked);
Setting.putDisplayDuration(!checked);
Setting.putDisplayMiniProgress(!checked);
notifyItemRangeChanged(0, getItemCount());
return true;
}
static class ViewHolder extends RecyclerView.ViewHolder {
private final AdapterDisplayBinding binding;
ViewHolder(@NonNull AdapterDisplayBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
}

@ -42,6 +42,7 @@ public class CustomTitleView extends AppCompatTextView {
}
private boolean hasEvent(KeyEvent event) {
if (Setting.isHomeSiteLock()) return false;
return KeyUtil.isEnterKey(event) || KeyUtil.isLeftKey(event) || KeyUtil.isRightKey(event) || (KeyUtil.isUpKey(event) && !coolDown);
}
@ -54,7 +55,6 @@ public class CustomTitleView extends AppCompatTextView {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (Setting.isHomeSiteLock()) return false;
if (VodConfig.get().getSites().isEmpty()) return false;
if (hasEvent(event)) return onKeyDown(event);
else return super.dispatchKeyEvent(event);

@ -0,0 +1,65 @@
package com.fongmi.android.tv.ui.dialog;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.WindowManager;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.GridLayoutManager;
import com.fongmi.android.tv.databinding.DialogDisplayBinding;
import com.fongmi.android.tv.ui.adapter.DisplayAdapter;
import com.fongmi.android.tv.ui.custom.SpaceItemDecoration;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class DisplayDialog {
private final DialogDisplayBinding binding;
private final DisplayAdapter adapter;
private final AlertDialog dialog;
public static DisplayDialog create(Activity activity) {
return new DisplayDialog(activity);
}
public DisplayDialog(Activity activity) {
this.adapter = new DisplayAdapter();
this.binding = DialogDisplayBinding.inflate(LayoutInflater.from(activity));
this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create();
}
public void show() {
initView();
initEvent();
}
private void initView() {
setRecyclerView();
setDialog();
}
private void initEvent() {
}
private void setRecyclerView() {
binding.recycler.setAdapter(adapter);
binding.recycler.setHasFixedSize(true);
binding.recycler.setItemAnimator(null);
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16));
binding.recycler.setLayoutManager(new GridLayoutManager(dialog.getContext(), 1));
binding.recycler.post(() -> binding.recycler.scrollToPosition(0));
}
private void setDialog() {
if (adapter.getItemCount() == 0) return;
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = (int) (ResUtil.getScreenWidth() * 0.4f);
dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
dialog.show();
}
}

@ -110,7 +110,7 @@ public class HomeFragment extends BaseFragment implements VodPresenter.OnClickLi
private void setAdapter() {
ListRow funcRow = getFuncRow();
if (funcRow != null) mAdapter.add(funcRow);
mAdapter.add(R.string.home_history);
if (Setting.isHomeHistory()) mAdapter.add(R.string.home_history);
mAdapter.add(R.string.home_recommend);
mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this));
homeUI = Setting.getHomeUI();
@ -161,9 +161,21 @@ public class HomeFragment extends BaseFragment implements VodPresenter.OnClickLi
}
public void getHistory(boolean renew) {
List<History> items = History.get();
int historyIndex = getHistoryIndex();
int recommendIndex = getRecommendIndex();
if (historyIndex == -1) {
if (!Setting.isHomeHistory()) return;
int historyStringIndex = recommendIndex - 1;
historyStringIndex = historyStringIndex < 0 ? 0 : historyStringIndex;
mAdapter.add(historyStringIndex, R.string.home_history);
}
if (!Setting.isHomeHistory()) {
mAdapter.removeItems(historyIndex - 1, 2);
return;
}
historyIndex = getHistoryIndex();
recommendIndex = getRecommendIndex();
List<History> items = History.get();
boolean exist = recommendIndex - historyIndex == 2;
if (renew) mHistoryAdapter = new ArrayObjectAdapter(mPresenter = new HistoryPresenter(this));
if ((items.isEmpty() && exist) || (renew && exist)) mAdapter.removeItems(historyIndex, 1);

@ -146,6 +146,8 @@
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@ -153,7 +155,7 @@
android:orientation="horizontal">
<LinearLayout
android:id="@+id/displayTime"
android:id="@+id/homeUI"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
@ -167,23 +169,23 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/play_time"
android:text="@string/setting_home_ui"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/displayTimeText"
android:id="@+id/homeUIText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="" />
tools:text="簡潔風格" />
</LinearLayout>
<LinearLayout
android:id="@+id/displayNetspeed"
android:id="@+id/homeHistory"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
@ -196,18 +198,18 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/play_netspeed"
android:text="@string/home_history"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/displayNetspeedText"
android:id="@+id/homeHistoryText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="開" />
tools:text="開" />
</LinearLayout>
@ -220,7 +222,7 @@
android:orientation="horizontal">
<LinearLayout
android:id="@+id/displayDuration"
android:id="@+id/display"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
@ -234,23 +236,14 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/play_duration"
android:text="@string/play_display"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/displayDurationText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="開" />
</LinearLayout>
<LinearLayout
android:id="@+id/displayMiniProgress"
android:id="@+id/homeButtons"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
@ -263,19 +256,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/play_mini_progress"
android:text="@string/setting_home_buttons"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/displayMiniProgressText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="開" />
</LinearLayout>
</LinearLayout>
@ -479,64 +463,5 @@
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/homeUI"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="1"
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_home_ui"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/homeUIText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="簡潔風格" />
</LinearLayout>
<LinearLayout
android:id="@+id/homeButtons"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
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_home_buttons"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/select"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="marquee"
android:gravity="center"
android:singleLine="true"
android:textColor="@color/text"
android:textSize="18sp"
tools:text="時間" />
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/check"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginStart="12dp"
android:buttonTint="@color/white"
android:clickable="false"
android:enabled="false"
android:focusable="false"
android:focusableInTouchMode="false" />
</LinearLayout>
</LinearLayout>

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp">
<com.fongmi.android.tv.ui.custom.CustomRecyclerView
android:id="@+id/recycler"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:maxHeight="264dp"
tools:itemCount="5"
tools:listitem="@layout/adapter_display" />
</LinearLayout>

@ -461,4 +461,12 @@ public class Setting {
return Prefers.getString("home_buttons_sorted", defaultValue);
}
public static boolean isHomeHistory() {
return Prefers.getBoolean("home_history", true);
}
public static void putHomeHistory(boolean show) {
Prefers.put("home_history", show);
}
}

@ -41,6 +41,7 @@
<string name="play_duration">进度</string>
<string name="play_mini_progress">迷你进度</string>
<string name="play_danmu">弹幕</string>
<string name="play_display">屏显</string>
<string name="play_speed">倍速</string>
<string name="play_change">换源</string>
<string name="play_forward"></string>

@ -41,6 +41,7 @@
<string name="play_duration">進度</string>
<string name="play_mini_progress">迷你進度</string>
<string name="play_danmu">彈幕</string>
<string name="play_display">屏顯</string>
<string name="play_speed">倍速</string>
<string name="play_change">換源</string>
<string name="play_forward"></string>

@ -41,6 +41,7 @@
<string name="play_duration">Duration</string>
<string name="play_mini_progress">Mini Progress</string>
<string name="play_danmu">Danmu</string>
<string name="play_display">Display</string>
<string name="play_speed">Speed</string>
<string name="play_change">Change</string>
<string name="play_forward"></string>

Loading…
Cancel
Save