- 字幕大小自适应

- 字幕大小可调节
- 字幕延时可调节
pull/45/head
okjackcaptain 4 years ago
parent 506d85ed87
commit 2f6f26e336
  1. 7
      app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java
  2. 32
      app/src/main/java/com/github/tvbox/osc/subtitle/DefaultSubtitleEngine.java
  3. 6
      app/src/main/java/com/github/tvbox/osc/subtitle/SubtitleEngine.java
  4. 5
      app/src/main/java/com/github/tvbox/osc/subtitle/widget/SimpleSubtitleView.java
  5. 10
      app/src/main/java/com/github/tvbox/osc/ui/activity/PlayActivity.java
  6. 114
      app/src/main/java/com/github/tvbox/osc/ui/dialog/SubtitleDialog.java
  7. 12
      app/src/main/java/com/github/tvbox/osc/ui/fragment/PlayFragment.java
  8. 2
      app/src/main/java/com/github/tvbox/osc/util/HawkConfig.java
  9. 19
      app/src/main/java/com/github/tvbox/osc/util/ScreenUtils.java
  10. 41
      app/src/main/java/com/github/tvbox/osc/util/SubtitleHelper.java
  11. 100
      app/src/main/res/layout/dialog_subtitle.xml
  12. 418
      app/src/main/res/layout/player_vod_control_view.xml
  13. 1
      app/src/main/res/values/dimens.xml

@ -23,8 +23,10 @@ import com.github.tvbox.osc.subtitle.widget.SimpleSubtitleView;
import com.github.tvbox.osc.ui.adapter.ParseAdapter;
import com.github.tvbox.osc.ui.adapter.SelectDialogAdapter;
import com.github.tvbox.osc.ui.dialog.SelectDialog;
import com.github.tvbox.osc.util.FastClickCheckUtil;
import com.github.tvbox.osc.util.HawkConfig;
import com.github.tvbox.osc.util.PlayerHelper;
import com.github.tvbox.osc.util.SubtitleHelper;
import com.orhanobut.hawk.Hawk;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;
@ -181,6 +183,9 @@ public class VodController extends BaseController {
mSubtitleView = findViewById(R.id.subtitle_view);
mZimuBtn = findViewById(R.id.zimu_select);
int subtitleTextSize = SubtitleHelper.getTextSize(mActivity);
mSubtitleView.setTextSize(subtitleTextSize);
myHandle=new Handler();
myRunnable = new Runnable() {
@Override
@ -334,6 +339,7 @@ public class VodController extends BaseController {
public void onClick(View view) {
// myHandle.removeCallbacks(myRunnable);
// myHandle.postDelayed(myRunnable, myHandleSeconds);
FastClickCheckUtil.check(view);
try {
int playerType = mPlayerConfig.getInt("pl");
int defaultPos = 0;
@ -518,6 +524,7 @@ public class VodController extends BaseController {
mZimuBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
FastClickCheckUtil.check(view);
listener.selectSubtitle();
hideBottom();
}

@ -34,7 +34,9 @@ import android.util.Log;
import com.github.tvbox.osc.subtitle.cache.SubtitleCache;
import com.github.tvbox.osc.subtitle.model.Subtitle;
import com.github.tvbox.osc.subtitle.model.Time;
import com.github.tvbox.osc.subtitle.model.TimedTextObject;
import com.github.tvbox.osc.util.SubtitleHelper;
import java.util.ArrayList;
import java.util.List;
@ -84,6 +86,7 @@ public class DefaultSubtitleEngine implements SubtitleEngine {
mSubtitles = mCache.get(path);
if (mSubtitles != null && !mSubtitles.isEmpty()) {
Log.d(TAG, "from cache.");
setSubtitleDelay(SubtitleHelper.getTimeDelay());
notifyPrepared();
return;
}
@ -100,6 +103,7 @@ public class DefaultSubtitleEngine implements SubtitleEngine {
return;
}
mSubtitles = new ArrayList<>(captions.values());
setSubtitleDelay(SubtitleHelper.getTimeDelay());
notifyPrepared();
mCache.put(path, new ArrayList<>(captions.values()));
}
@ -111,6 +115,34 @@ public class DefaultSubtitleEngine implements SubtitleEngine {
});
}
@Override
public void setSubtitleDelay(Integer milliseconds) {
if (milliseconds == 0) {
return;
}
if (mSubtitles == null || mSubtitles.size() == 0) {
return;
}
List<Subtitle> thisSubtitles = mSubtitles;
mSubtitles = null;
for (int i = 0; i < thisSubtitles.size(); i++) {
Subtitle subtitle = thisSubtitles.get(i);
Time start = subtitle.start;
Time end = subtitle.end;
start.mseconds += milliseconds;
end.mseconds += milliseconds;
if (start.mseconds <= 0) {
start.mseconds = 0;
}
if (end.mseconds <= 0) {
end.mseconds = 0;
}
subtitle.start = start;
subtitle.end = end;
}
mSubtitles = thisSubtitles;
}
@Override
public void reset() {
stop();

@ -46,6 +46,12 @@ public interface SubtitleEngine {
*/
void setSubtitlePath(String path);
/**
* 字幕延时
* @param milliseconds
*/
void setSubtitleDelay(Integer milliseconds);
/**
* 开启字幕刷新任务
*/

@ -94,6 +94,11 @@ public class SimpleSubtitleView extends TextView
mSubtitleEngine.setSubtitlePath(path);
}
@Override
public void setSubtitleDelay(Integer mseconds) {
mSubtitleEngine.setSubtitleDelay(mseconds);
}
@Override
public void reset() {
mSubtitleEngine.reset();

@ -194,6 +194,16 @@ public class PlayActivity extends BaseActivity {
@Override
public void selectSubtitle() {
SubtitleDialog subtitleDialog = new SubtitleDialog(PlayActivity.this);
subtitleDialog.setSubtitleViewListener(new SubtitleDialog.SubtitleViewListener() {
@Override
public void setTextSize(int size) {
mController.mSubtitleView.setTextSize(size);
}
@Override
public void setSubtitleDelay(int milliseconds) {
mController.mSubtitleView.setSubtitleDelay(milliseconds);
}
});
subtitleDialog.setSearchSubtitleListener(new SubtitleDialog.SearchSubtitleListener() {
@Override
public void openSearchSubtitleDialog() {

@ -1,5 +1,6 @@
package com.github.tvbox.osc.ui.dialog;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.TextView;
@ -8,6 +9,7 @@ import androidx.annotation.NonNull;
import com.github.tvbox.osc.R;
import com.github.tvbox.osc.util.FastClickCheckUtil;
import com.github.tvbox.osc.util.SubtitleHelper;
import org.jetbrains.annotations.NotNull;
@ -15,21 +17,35 @@ public class SubtitleDialog extends BaseDialog {
private TextView selectLocal;
private TextView selectRemote;
private TextView subtitleSizeMinus;
private TextView subtitleSizeText;
private TextView subtitleSizePlus;
private TextView subtitleTimeMinus;
private TextView subtitleTimeText;
private TextView subtitleTimePlus;
private SearchSubtitleListener mSearchSubtitleListener;
private LocalFileChooserListener mLocalFileChooserListener;
private SubtitleViewListener mSubtitleViewListener;
public SubtitleDialog(@NonNull @NotNull Context context) {
super(context, R.style.CustomDialogStyleDim);
setCanceledOnTouchOutside(false);
setCancelable(true);
super(context);
if (context instanceof Activity) {
setOwnerActivity((Activity) context);
}
setContentView(R.layout.dialog_subtitle);
init(context);
initView(context);
}
private void init(Context context) {
private void initView(Context context) {
selectLocal = findViewById(R.id.selectLocal);
selectRemote = findViewById(R.id.selectRemote);
subtitleSizeMinus = findViewById(R.id.subtitleSizeMinus);
subtitleSizeText = findViewById(R.id.subtitleSizeText);
subtitleSizePlus = findViewById(R.id.subtitleSizePlus);
subtitleTimeMinus = findViewById(R.id.subtitleTimeMinus);
subtitleTimeText = findViewById(R.id.subtitleTimeText);
subtitleTimePlus = findViewById(R.id.subtitleTimePlus);
selectLocal.setOnClickListener(new View.OnClickListener() {
@Override
@ -48,6 +64,85 @@ public class SubtitleDialog extends BaseDialog {
mSearchSubtitleListener.openSearchSubtitleDialog();
}
});
int size = SubtitleHelper.getTextSize(getOwnerActivity());
subtitleSizeText.setText(Integer.toString(size));
subtitleSizeMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String sizeStr = subtitleSizeText.getText().toString();
int curSize = Integer.parseInt(sizeStr);
curSize -= 2;
if (curSize <= 12) {
curSize = 12;
}
subtitleSizeText.setText(Integer.toString(curSize));
SubtitleHelper.setTextSize(curSize);
mSubtitleViewListener.setTextSize(curSize);
}
});
subtitleSizePlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String sizeStr = subtitleSizeText.getText().toString();
int curSize = Integer.parseInt(sizeStr);
curSize += 2;
if (curSize >= 60) {
curSize = 60;
}
subtitleSizeText.setText(Integer.toString(curSize));
SubtitleHelper.setTextSize(curSize);
mSubtitleViewListener.setTextSize(curSize);
}
});
int timeDelay = SubtitleHelper.getTimeDelay();
String timeStr = "0";
if (timeDelay != 0) {
double dbTimeDelay = timeDelay/1000;
timeStr = Double.toString(dbTimeDelay);
}
subtitleTimeText.setText(timeStr);
subtitleTimeMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FastClickCheckUtil.check(view);
String timeStr = subtitleTimeText.getText().toString();
double time = Float.parseFloat(timeStr);
double oneceDelay = -0.5;
time += oneceDelay;
if (time == 0.0) {
timeStr = "0";
} else {
timeStr = Double.toString(time);
}
subtitleTimeText.setText(timeStr);
int mseconds = (int)(oneceDelay*1000);
SubtitleHelper.setTimeDelay((int)(time*1000));
mSubtitleViewListener.setSubtitleDelay(mseconds);
}
});
subtitleTimePlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FastClickCheckUtil.check(view);
String timeStr = subtitleTimeText.getText().toString();
double time = Float.parseFloat(timeStr);
double oneceDelay = 0.5;
time += oneceDelay;
if (time == 0.0) {
timeStr = "0";
} else {
timeStr = Double.toString(time);
}
subtitleTimeText.setText(timeStr);
int mseconds = (int)(oneceDelay*1000);
SubtitleHelper.setTimeDelay((int)(time*1000));
mSubtitleViewListener.setSubtitleDelay(mseconds);
}
});
}
public void setLocalFileChooserListener(LocalFileChooserListener localFileChooserListener) {
@ -65,4 +160,13 @@ public class SubtitleDialog extends BaseDialog {
public interface SearchSubtitleListener {
void openSearchSubtitleDialog();
}
public void setSubtitleViewListener(SubtitleViewListener subtitleViewListener) {
mSubtitleViewListener = subtitleViewListener;
}
public interface SubtitleViewListener {
void setTextSize(int size);
void setSubtitleDelay(int milliseconds);
}
}

@ -192,7 +192,17 @@ public class PlayFragment extends BaseLazyFragment {
@Override
public void selectSubtitle() {
SubtitleDialog subtitleDialog = new SubtitleDialog(getContext());
SubtitleDialog subtitleDialog = new SubtitleDialog(getActivity());
subtitleDialog.setSubtitleViewListener(new SubtitleDialog.SubtitleViewListener() {
@Override
public void setTextSize(int size) {
mController.mSubtitleView.setTextSize(size);
}
@Override
public void setSubtitleDelay(int milliseconds) {
mController.mSubtitleView.setSubtitleDelay(milliseconds);
}
});
subtitleDialog.setSearchSubtitleListener(new SubtitleDialog.SearchSubtitleListener() {
@Override
public void openSearchSubtitleDialog() {

@ -31,4 +31,6 @@ public class HawkConfig {
public static final String LIVE_SHOW_NET_SPEED = "live_show_net_speed";
public static final String LIVE_SHOW_TIME = "live_show_time";
public static final String FAST_SEARCH_MODE = "fast_search_mode";
public static final String SUBTITLE_TEXT_SIZE = "subtitle_text_size";
public static final String SUBTITLE_TIME_DELAY = "subtitle_time_delay";
}

@ -0,0 +1,19 @@
package com.github.tvbox.osc.util;
import android.app.Activity;
import android.util.DisplayMetrics;
import android.view.WindowManager;
public class ScreenUtils {
public static double getSqrt(Activity activity) {
WindowManager wm = activity.getWindowManager();
DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels / dm.xdpi, 2);
double y = Math.pow(dm.heightPixels / dm.ydpi, 2);
double screenInches = Math.sqrt(x + y);// 屏幕尺寸
return screenInches;
}
}

@ -0,0 +1,41 @@
package com.github.tvbox.osc.util;
import android.app.Activity;
import com.orhanobut.hawk.Hawk;
public class SubtitleHelper {
public static int getSubtitleTextAutoSize(Activity activity) {
double screenSqrt = ScreenUtils.getSqrt(activity);
int subtitleTextSize = 16;
if (screenSqrt > 7.0 && screenSqrt <= 13.0) {
subtitleTextSize = 24;
} else if (screenSqrt > 13.0 && screenSqrt <= 50.0) {
subtitleTextSize = 36;
} else if (screenSqrt > 50.0) {
subtitleTextSize = 46;
}
return subtitleTextSize;
}
public static int getTextSize(Activity activity) {
int autoSize = getSubtitleTextAutoSize(activity);
int subtitleConfigSize = Hawk.get(HawkConfig.SUBTITLE_TEXT_SIZE, autoSize);
return subtitleConfigSize;
}
public static void setTextSize(int size) {
Hawk.put(HawkConfig.SUBTITLE_TEXT_SIZE, size);
}
public static int getTimeDelay() {
int subtitleConfigTimeDelay = Hawk.get(HawkConfig.SUBTITLE_TIME_DELAY, 0);
return subtitleConfigTimeDelay;
}
public static void setTimeDelay(int delay) {
Hawk.put(HawkConfig.SUBTITLE_TIME_DELAY, delay);
}
}

@ -31,7 +31,7 @@
android:padding="@dimen/vs_10"
android:text="选择本地字幕"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/selectRemote"
@ -45,7 +45,103 @@
android:padding="@dimen/vs_10"
android:text="在线搜索字幕"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
<LinearLayout
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_gravity="center"
android:layout_marginTop="@dimen/vs_10"
android:layout_width="@dimen/vs_480"
android:layout_height="@dimen/vs_60">
<TextView
android:id="@+id/subtitleSizeMinus"
android:layout_width="@dimen/vs_140"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:gravity="center"
android:padding="@dimen/vs_10"
android:text="字号减小"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/subtitleSizeText"
android:layout_width="@dimen/vs_120"
android:layout_height="@dimen/vs_60"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginLeft="@dimen/vs_40"
android:layout_marginRight="@dimen/vs_40"
android:text="16"
android:textStyle="bold"
android:textColor="@color/color_CC000000"
android:textSize="@dimen/ts_40" />
<TextView
android:id="@+id/subtitleSizePlus"
android:layout_width="@dimen/vs_140"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:gravity="center"
android:padding="@dimen/vs_10"
android:text="字号增大"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_24" />
</LinearLayout>
<LinearLayout
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_gravity="center"
android:layout_marginTop="@dimen/vs_10"
android:layout_width="@dimen/vs_480"
android:layout_height="@dimen/vs_60">
<TextView
android:id="@+id/subtitleTimeMinus"
android:layout_width="@dimen/vs_140"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:gravity="center"
android:padding="@dimen/vs_10"
android:text="字幕提前"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/subtitleTimeText"
android:layout_width="@dimen/vs_120"
android:layout_height="@dimen/vs_60"
android:layout_gravity="center"
android:gravity="center"
android:layout_marginLeft="@dimen/vs_40"
android:layout_marginRight="@dimen/vs_40"
android:text="0"
android:textStyle="bold"
android:textColor="@color/color_CC000000"
android:textSize="@dimen/ts_40" />
<TextView
android:id="@+id/subtitleTimePlus"
android:layout_width="@dimen/vs_140"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:gravity="center"
android:padding="@dimen/vs_10"
android:text="字幕推迟"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_24" />
</LinearLayout>
</LinearLayout>

@ -29,7 +29,7 @@
android:paddingLeft="@dimen/vs_20"
android:text="http://"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/tv_videosize"
@ -42,7 +42,7 @@
android:tag="vod_video_size"
android:text="[ 1024 x 768 ]"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
</LinearLayout>
@ -71,7 +71,7 @@
android:tag="vod_control_pause_time"
android:text="00:00:00"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/tv_play_load_net_speed_right_top"
@ -84,7 +84,7 @@
android:tag="vod_control_pause_time"
android:text="0Kb/s"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
</LinearLayout>
<com.github.tvbox.osc.subtitle.widget.SimpleSubtitleView
@ -118,192 +118,222 @@
android:visibility="gone"
tools:visibility="visible">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/vs_10"
android:orientation="horizontal">
<TextView
android:id="@+id/play_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="下一集"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_pre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="上一集"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_retry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="重播"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="刷新"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_scale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="16:9"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_speed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="x1.0"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_player"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="系统播放器"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_ijk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="硬解码"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:padding="@dimen/vs_10"
android:text="片头片尾"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_time_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="01:00"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_time_end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="01:00"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/play_time_step"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="1S"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<!--添加片头片尾重置按钮-->
<TextView
android:id="@+id/play_time_reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="重置"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
<TextView
android:id="@+id/zimu_select"
android:layout_width="wrap_content"
<HorizontalScrollView
android:scrollbars="none"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="字幕"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
</LinearLayout>
android:layout_marginBottom="@dimen/vs_10"
android:orientation="horizontal">
<TextView
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:paddingRight="@dimen/vs_10"
android:text="播放"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_next"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="下一集"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_pre"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="上一集"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_retry"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="重播"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_refresh"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="刷新"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_scale"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="16:9"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_speed"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="x1.0"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_player"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="系统播放器"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_ijk"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="硬解码"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:padding="@dimen/vs_10"
android:text="片头片尾"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_time_start"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="01:00"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_time_end"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="01:00"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/play_time_step"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="1S"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<!--添加片头片尾重置按钮-->
<TextView
android:id="@+id/play_time_reset"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="重置"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
<TextView
android:id="@+id/zimu_select"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/vs_5"
android:layout_marginRight="@dimen/vs_5"
android:background="@drawable/button_dialog_main"
android:focusable="true"
android:padding="@dimen/vs_10"
android:text="字幕"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
</LinearLayout>
</HorizontalScrollView>
<LinearLayout
@ -324,7 +354,7 @@
android:paddingRight="@dimen/vs_10"
android:text="解析"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
<com.owen.tvrecyclerview.widget.TvRecyclerView
android:id="@+id/mGridView"
@ -352,7 +382,7 @@
android:paddingRight="@dimen/vs_10"
android:text="00:00"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
<SeekBar
android:id="@+id/seekBar"
@ -381,7 +411,7 @@
android:paddingLeft="@dimen/vs_10"
android:text="00:00"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
</LinearLayout>
@ -415,7 +445,7 @@
android:paddingLeft="@dimen/vs_20"
android:text="http://"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
</LinearLayout>
<LinearLayout
@ -524,6 +554,6 @@
android:tag="play_load_net_speed"
android:text="0"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/ts_22" />
android:textSize="@dimen/ts_24" />
</FrameLayout>

@ -30,6 +30,7 @@
<dimen name="vs_4">4mm</dimen>
<dimen name="vs_5">5mm</dimen>
<dimen name="vs_6">6mm</dimen>
<dimen name="vs_7">7mm</dimen>
<dimen name="vs_8">8mm</dimen>
<dimen name="vs_10">10mm</dimen>
<dimen name="vs_12">12mm</dimen>

Loading…
Cancel
Save