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..76b40887a 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
@@ -163,6 +163,14 @@ public class Prefers {
put("across", across);
}
+ public static boolean isRotate() {
+ return getBoolean("rotate", true);
+ }
+
+ public static void putRotate(boolean rotate) {
+ put("rotate", rotate);
+ }
+
public static boolean getUpdate() {
return getBoolean("update", true);
}
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 8daea86b1..b2ec1ff4f 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
@@ -51,6 +51,7 @@ import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Traffic;
import com.fongmi.android.tv.utils.Utils;
+import com.github.bassaer.library.MDColor;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ui.StyledPlayerView;
@@ -191,6 +192,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
setVideoView();
setViewModel();
showProgress();
+ getRotate();
getDetail();
}
@@ -208,6 +210,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mBinding.control.scale.setOnClickListener(view -> onScale());
mBinding.control.speed.setOnClickListener(view -> onSpeed());
mBinding.control.reset.setOnClickListener(view -> onReset());
+ mBinding.control.rotate.setOnClickListener(view -> onRotate());
mBinding.control.player.setOnClickListener(view -> onPlayer());
mBinding.control.decode.setOnClickListener(view -> onDecode());
mBinding.control.ending.setOnClickListener(view -> onEnding());
@@ -276,6 +279,11 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
});
}
+ private void getRotate() {
+ mBinding.control.rotate.getDrawable().setTint(Prefers.isRotate() ? MDColor.YELLOW_500 : MDColor.WHITE);
+ setRotate();
+ }
+
private void getDetail() {
mBinding.progressLayout.showProgress();
mViewModel.detailContent(getKey(), getId());
@@ -474,6 +482,11 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
return true;
}
+ private void onRotate() {
+ Prefers.putRotate(!Prefers.isRotate());
+ getRotate();
+ }
+
private void onPlayer() {
mPlayers.togglePlayer();
Prefers.putPlayer(mPlayers.getPlayer());
@@ -610,7 +623,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
}
private void setRotate() {
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_USER);
+ setRequestedOrientation(Prefers.isRotate() ? ActivityInfo.SCREEN_ORIENTATION_FULL_USER : ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
}
private void setR1Callback() {
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 e6676606d..1288d8bbd 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,7 +12,6 @@ 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.R;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Class;
@@ -42,19 +41,18 @@ import java.util.List;
public class VodFragment extends BaseFragment implements SiteCallback, FilterCallback, TypeAdapter.OnClickListener {
private FragmentVodBinding mBinding;
- private TypeAdapter mTypeAdapter;
- private PageAdapter mPageAdapter;
+ private TypeAdapter mAdapter;
public static VodFragment newInstance() {
return new VodFragment();
}
private HomeFragment getHomeFragment() {
- return (HomeFragment) mPageAdapter.instantiateItem(mBinding.pager, 0);
+ return (HomeFragment) mBinding.pager.getAdapter().instantiateItem(mBinding.pager, 0);
}
private TypeFragment getTypeFragment() {
- return (TypeFragment) mPageAdapter.instantiateItem(mBinding.pager, mBinding.pager.getCurrentItem());
+ return (TypeFragment) mBinding.pager.getAdapter().instantiateItem(mBinding.pager, mBinding.pager.getCurrentItem());
}
private Site getSite() {
@@ -81,9 +79,9 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
mBinding.pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
- setFabVisible(mTypeAdapter.get(mBinding.pager.getCurrentItem()).getFilters().size() > 0);
+ setFabVisible(mAdapter.get(mBinding.pager.getCurrentItem()).getFilters().size() > 0);
mBinding.type.smoothScrollToPosition(position);
- mTypeAdapter.setActivated(position);
+ mAdapter.setActivated(position);
}
});
}
@@ -91,7 +89,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
private void setRecyclerView() {
mBinding.type.setHasFixedSize(true);
mBinding.type.setItemAnimator(null);
- mBinding.type.setAdapter(mTypeAdapter = new TypeAdapter(this));
+ mBinding.type.setAdapter(mAdapter = new TypeAdapter(this));
}
private void setFabVisible(boolean filter) {
@@ -115,7 +113,7 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
private void onFilter(View view) {
for (Fragment fragment : getChildFragmentManager().getFragments()) if (fragment instanceof BottomSheetDialogFragment) return;
- FilterDialog.create(this).filter(mTypeAdapter.get(mBinding.pager.getCurrentItem()).getFilters()).show(getChildFragmentManager(), null);
+ FilterDialog.create(this).filter(mAdapter.get(mBinding.pager.getCurrentItem()).getFilters()).show(getChildFragmentManager(), null);
}
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -124,8 +122,8 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
}
private void homeContent() {
- mTypeAdapter.clear();
- mBinding.pager.setAdapter(mPageAdapter = new PageAdapter(getChildFragmentManager()));
+ mAdapter.clear();
+ mBinding.pager.setAdapter(new PageAdapter(getChildFragmentManager()));
mBinding.title.setText(getSite().getName().isEmpty() ? getString(R.string.app_name) : getSite().getName());
}
@@ -143,8 +141,8 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
@Override
public void onItemClick(int position, Class item) {
- mTypeAdapter.setActivated(position);
mBinding.pager.setCurrentItem(position);
+ mAdapter.setActivated(position);
}
@Override
@@ -161,10 +159,14 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
}
public void setAdapter(Result result) {
- result.setTypes(getTypes(result));
- mTypeAdapter.addAll(result.getTypes());
- for (Class item : mTypeAdapter.getTypes()) if (result.getFilters().containsKey(item.getTypeId())) item.setFilters(result.getFilters().get(item.getTypeId()));
- App.post(() -> mPageAdapter.notifyDataSetChanged());
+ try {
+ result.setTypes(getTypes(result));
+ mAdapter.addAll(result.getTypes());
+ for (Class item : mAdapter.getTypes()) if (result.getFilters().containsKey(item.getTypeId())) item.setFilters(result.getFilters().get(item.getTypeId()));
+ mBinding.pager.getAdapter().notifyDataSetChanged();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
}
public boolean canBack() {
@@ -191,14 +193,14 @@ public class VodFragment extends BaseFragment implements SiteCallback, FilterCal
@NonNull
@Override
public Fragment getItem(int position) {
- Class type = mTypeAdapter.get(position);
+ Class type = mAdapter.get(position);
if (position == 0) return HomeFragment.newInstance();
return TypeFragment.newInstance(type.getTypeId(), type.getTypeFlag().equals("1"));
}
@Override
public int getCount() {
- return mTypeAdapter.getItemCount();
+ return mAdapter.getItemCount();
}
@Override
diff --git a/app/src/mobile/res/drawable/ic_lock_rotate.xml b/app/src/mobile/res/drawable/ic_lock_rotate.xml
new file mode 100644
index 000000000..74b4dbf27
--- /dev/null
+++ b/app/src/mobile/res/drawable/ic_lock_rotate.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/mobile/res/layout/view_control_vod.xml b/app/src/mobile/res/layout/view_control_vod.xml
index 7a156dcc5..e643f0996 100644
--- a/app/src/mobile/res/layout/view_control_vod.xml
+++ b/app/src/mobile/res/layout/view_control_vod.xml
@@ -181,6 +181,14 @@
android:layout_marginEnd="6dp"
android:layout_weight="1" />
+
+