Support rotate lock

pull/123/head
FongMi 3 years ago
parent 4af369975a
commit 79b0955aff
  1. 8
      app/src/main/java/com/fongmi/android/tv/utils/Prefers.java
  2. 15
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  3. 38
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  4. 10
      app/src/mobile/res/drawable/ic_lock_rotate.xml
  5. 8
      app/src/mobile/res/layout/view_control_vod.xml

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

@ -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() {

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

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M13,3c-4.97,0 -9,4.03 -9,9H1l4,4l4,-4H6c0,-3.86 3.14,-7 7,-7s7,3.14 7,7s-3.14,7 -7,7c-1.9,0 -3.62,-0.76 -4.88,-1.99L6.7,18.42C8.32,20.01 10.55,21 13,21c4.97,0 9,-4.03 9,-9S17.97,3 13,3zM15,11v-1c0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2v1c-0.55,0 -1,0.45 -1,1v3c0,0.55 0.45,1 1,1h4c0.55,0 1,-0.45 1,-1v-3C16,11.45 15.55,11 15,11zM14,11h-2v-1c0,-0.55 0.45,-1 1,-1s1,0.45 1,1V11z" />
</vector>

@ -181,6 +181,14 @@
android:layout_marginEnd="6dp"
android:layout_weight="1" />
<ImageView
android:id="@+id/rotate"
android:layout_width="24dp"
android:layout_marginEnd="6dp"
android:layout_height="24dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_lock_rotate" />
<ImageView
android:id="@+id/full"
android:layout_width="24dp"

Loading…
Cancel
Save