添加小窗配置开关 视频操作栏闲置5秒自动消失 优化选集时调用顺序问题 提升观感

pull/12/head
于俊 4 years ago
parent ba980757bb
commit 8c00ccbe03
  1. 3
      .idea/misc.xml
  2. 37
      app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java
  3. 24
      app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
  4. 12
      app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java
  5. 1
      app/src/main/java/com/github/tvbox/osc/util/HawkConfig.java
  6. 968
      app/src/main/res/layout/fragment_model.xml

@ -10,7 +10,10 @@
<entry key="..\:/android/repository/TVBoxOSC/app/src/main/res/layout/activity_live_play.xml" value="0.1" />
<entry key="..\:/android/repository/TVBoxOSC/app/src/main/res/layout/item_channel_group_layout.xml" value="0.22826086956521738" />
<entry key="..\:/android/repository/TVBoxOSC/app/src/main/res/layout/item_live_channel_layout.xml" value="0.22826086956521738" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/drawable/box_controller_top_bg.xml" value="0.2455" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/activity_detail.xml" value="0.3619791666666667" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/fragment_model.xml" value="0.1296875" />
<entry key="..\:/tvbox/TVBoxOS/app/src/main/res/layout/player_vod_control_view.xml" value="0.3619791666666667" />
</map>
</option>
</component>

@ -1,6 +1,7 @@
package com.github.tvbox.osc.player.controller;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.MotionEvent;
@ -37,7 +38,6 @@ import xyz.doikki.videoplayer.util.PlayerUtils;
import static xyz.doikki.videoplayer.util.PlayerUtils.stringForTime;
//视频播放页面控件
public class VodController extends BaseController {
public VodController(@NonNull @NotNull Context context) {
super(context);
@ -101,6 +101,10 @@ public class VodController extends BaseController {
TextView mPlayerTimeSkipBtn;
TextView mPlayerTimeStepBtn;
Handler myHandle;
Runnable myRunnable;
int myHandleSeconds = 5000;//闲置多少毫秒秒关闭底栏 默认5秒
@Override
protected void initView() {
super.initView();
@ -125,6 +129,14 @@ public class VodController extends BaseController {
mPlayerTimeSkipBtn = findViewById(R.id.play_time_end);
mPlayerTimeStepBtn = findViewById(R.id.play_time_step);
myHandle=new Handler();
myRunnable = new Runnable() {
@Override
public void run() {
hideBottom();
}
};
mGridView.setLayoutManager(new V7LinearLayoutManager(getContext(), 0, false));
ParseAdapter parseAdapter = new ParseAdapter();
parseAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@ -199,6 +211,8 @@ public class VodController extends BaseController {
mPlayerScaleBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
myHandle.removeCallbacks(myRunnable);
myHandle.postDelayed(myRunnable, myHandleSeconds);
try {
int scaleType = mPlayerConfig.getInt("sc");
scaleType++;
@ -216,6 +230,8 @@ public class VodController extends BaseController {
mPlayerSpeedBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
myHandle.removeCallbacks(myRunnable);
myHandle.postDelayed(myRunnable, myHandleSeconds);
try {
float speed = (float) mPlayerConfig.getDouble("sp");
speed += 0.25f;
@ -289,6 +305,8 @@ public class VodController extends BaseController {
findViewById(R.id.play_time_reset).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
myHandle.removeCallbacks(myRunnable);
myHandle.postDelayed(myRunnable, myHandleSeconds);
try {
mPlayerConfig.put("et", 0);
mPlayerConfig.put("st", 0);
@ -302,6 +320,8 @@ public class VodController extends BaseController {
mPlayerTimeStartBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
myHandle.removeCallbacks(myRunnable);
myHandle.postDelayed(myRunnable, myHandleSeconds);
try {
int step = Hawk.get(HawkConfig.PLAY_TIME_STEP, 5);
int st = mPlayerConfig.getInt("st");
@ -320,6 +340,8 @@ public class VodController extends BaseController {
mPlayerTimeSkipBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
myHandle.removeCallbacks(myRunnable);
myHandle.postDelayed(myRunnable, myHandleSeconds);
try {
int step = Hawk.get(HawkConfig.PLAY_TIME_STEP, 5);
int et = mPlayerConfig.getInt("et");
@ -338,6 +360,8 @@ public class VodController extends BaseController {
mPlayerTimeStepBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
myHandle.removeCallbacks(myRunnable);
myHandle.postDelayed(myRunnable, myHandleSeconds);
int step = Hawk.get(HawkConfig.PLAY_TIME_STEP, 5);
step += 5;
if (step > 30) {
@ -562,10 +586,12 @@ public class VodController extends BaseController {
togglePlay();
return true;
}
} else if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
} else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
// } else if (keyCode == KeyEvent.KEYCODE_DPAD_UP) { // 闲置开启计时关闭透明底栏
} else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN || keyCode == KeyEvent.KEYCODE_DPAD_UP) {
myHandle.removeCallbacks(myRunnable);
if (!isBottomVisible()) {
showBottom();
myHandle.postDelayed(myRunnable, myHandleSeconds);
return true;
}
}
@ -582,8 +608,11 @@ public class VodController extends BaseController {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
myHandle.removeCallbacks(myRunnable);
if (!isBottomVisible()) {
showBottom();
// 闲置计时关闭
myHandle.postDelayed(myRunnable, myHandleSeconds);
} else {
hideBottom();
}
@ -601,4 +630,4 @@ public class VodController extends BaseController {
}
return false;
}
}
}

@ -38,6 +38,7 @@ import com.github.tvbox.osc.ui.dialog.QuickSearchDialog;
import com.github.tvbox.osc.ui.fragment.PlayFragment;
import com.github.tvbox.osc.util.DefaultConfig;
import com.github.tvbox.osc.util.FastClickCheckUtil;
import com.github.tvbox.osc.util.HawkConfig;
import com.github.tvbox.osc.util.MD5;
import com.github.tvbox.osc.viewmodel.SourceViewModel;
import com.google.gson.Gson;
@ -46,6 +47,7 @@ import com.google.gson.JsonElement;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.AbsCallback;
import com.lzy.okgo.model.Response;
import com.orhanobut.hawk.Hawk;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7GridLayoutManager;
import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;
@ -116,12 +118,6 @@ public class DetailActivity extends BaseActivity {
}
private void initView() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
tvPlay.requestFocus();
}
},500);
llLayout = findViewById(R.id.llLayout);
llPlayerPlace = findViewById(R.id.previewPlayerPlace);
llPlayerFragmentContainer = findViewById(R.id.previewPlayer);
@ -159,6 +155,12 @@ public class DetailActivity extends BaseActivity {
getSupportFragmentManager().beginTransaction().show(playFragment).commitAllowingStateLoss();
tvPlay.setText("全屏");
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
tvPlay.requestFocus();
}
},500);
tvSort.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@ -258,7 +260,7 @@ public class DetailActivity extends BaseActivity {
@Override
public void onItemPreSelected(TvRecyclerView parent, View itemView, int position) {
refresh(itemView, position);
}
@Override
@ -268,7 +270,7 @@ public class DetailActivity extends BaseActivity {
@Override
public void onItemClick(TvRecyclerView parent, View itemView, int position) {
refresh(itemView, position);
}
});
seriesAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@ -285,9 +287,9 @@ public class DetailActivity extends BaseActivity {
}
seriesAdapter.getData().get(vodInfo.playIndex).selected = true;
seriesAdapter.notifyItemChanged(vodInfo.playIndex);
jumpToPlay();
//选集全屏 此处取消注释
//选集全屏 想选集不全屏的注释下面一行
if (showPreview && !fullWindows) toggleFullPreview();
jumpToPlay();
}
}
});
@ -680,7 +682,7 @@ public class DetailActivity extends BaseActivity {
}
// preview
boolean showPreview = true; // true 开启 false 关闭
boolean showPreview = Hawk.get(HawkConfig.SHOW_PREVIEW, true);; // true 开启 false 关闭
boolean fullWindows = false;
ViewGroup.LayoutParams windowsPreview = null;
ViewGroup.LayoutParams windowsFull = null;

@ -58,6 +58,7 @@ public class ModelSettingFragment extends BaseLazyFragment {
private TextView tvDns;
private TextView tvHomeRec;
private TextView tvSearchView;
private TextView tvShowPreviewText;
public static ModelSettingFragment newInstance() {
return new ModelSettingFragment().setArguments();
@ -74,6 +75,8 @@ public class ModelSettingFragment extends BaseLazyFragment {
@Override
protected void init() {
tvShowPreviewText = findViewById(R.id.showPreviewText);
tvShowPreviewText.setText(Hawk.get(HawkConfig.SHOW_PREVIEW, true) ? "已开启" : "已关闭");
tvDebugOpen = findViewById(R.id.tvDebugOpen);
tvParseWebView = findViewById(R.id.tvParseWebView);
tvMediaCodec = findViewById(R.id.tvMediaCodec);
@ -498,6 +501,15 @@ public class ModelSettingFragment extends BaseLazyFragment {
findViewById(R.id.llDebug).setVisibility(View.VISIBLE);
}
};
findViewById(R.id.showPreview).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FastClickCheckUtil.check(v);
Hawk.put(HawkConfig.SHOW_PREVIEW, !Hawk.get(HawkConfig.SHOW_PREVIEW, true));
tvShowPreviewText.setText(Hawk.get(HawkConfig.SHOW_PREVIEW, true) ? "已开启" : "已关闭");
}
});
}
@Override

@ -7,6 +7,7 @@ package com.github.tvbox.osc.util;
*/
public class HawkConfig {
public static final String API_URL = "api_url";
public static final String SHOW_PREVIEW = "show_preview";
public static final String API_HISTORY = "api_history";
public static final String HOME_API = "home_api";
public static final String DEFAULT_PARSE = "parse_default";

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save