collect complete。

pull/1/head
Cuke 4 years ago
parent 438d104644
commit c01fbacb9e
  1. 58
      app/schemas/com.github.tvbox.osc.data.AppDataBase/1.json
  2. 3
      app/src/main/AndroidManifest.xml
  3. 6
      app/src/main/java/com/github/tvbox/osc/bean/SourceBean.java
  4. 1
      app/src/main/java/com/github/tvbox/osc/bean/VodInfo.java
  5. 26
      app/src/main/java/com/github/tvbox/osc/cache/RoomDataManger.java
  6. 31
      app/src/main/java/com/github/tvbox/osc/cache/VodCollect.java
  7. 35
      app/src/main/java/com/github/tvbox/osc/cache/VodCollectDao.java
  8. 3
      app/src/main/java/com/github/tvbox/osc/cache/VodRecord.java
  9. 6
      app/src/main/java/com/github/tvbox/osc/data/AppDataBase.java
  10. 2
      app/src/main/java/com/github/tvbox/osc/data/AppDataManager.java
  11. 4
      app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java
  12. 143
      app/src/main/java/com/github/tvbox/osc/ui/activity/CollectActivity.java
  13. 12
      app/src/main/java/com/github/tvbox/osc/ui/activity/DetailActivity.java
  14. 1
      app/src/main/java/com/github/tvbox/osc/ui/activity/SearchActivity.java
  15. 46
      app/src/main/java/com/github/tvbox/osc/ui/adapter/CollectAdapter.java
  16. 2
      app/src/main/java/com/github/tvbox/osc/ui/dialog/ApiHistoryDialog.java
  17. 1
      app/src/main/java/com/github/tvbox/osc/ui/dialog/QuickSearchDialog.java
  18. 32
      app/src/main/java/com/github/tvbox/osc/ui/fragment/ModelSettingFragment.java
  19. 7
      app/src/main/java/com/github/tvbox/osc/ui/fragment/UserFragment.java
  20. 3
      app/src/main/java/com/github/tvbox/osc/util/DefaultConfig.java
  21. 43
      app/src/main/java/com/github/tvbox/osc/util/PlayerHelper.java
  22. 76
      app/src/main/res/layout/activity_collect.xml
  23. 3
      app/src/main/res/layout/activity_history.xml

@ -2,7 +2,7 @@
"formatVersion": 1,
"database": {
"version": 1,
"identityHash": "6d7179059b55b28fda16a36a445f306f",
"identityHash": "d1c2780b5424f0e960fe2364f63c86b8",
"entities": [
{
"tableName": "cache",
@ -32,7 +32,7 @@
},
{
"tableName": "vodRecord",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `vodId` TEXT, `updateTime` INTEGER NOT NULL, `sourceKey` TEXT, `data` BLOB, `dataJson` TEXT, `testMigration` INTEGER NOT NULL)",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `vodId` TEXT, `updateTime` INTEGER NOT NULL, `sourceKey` TEXT, `dataJson` TEXT)",
"fields": [
{
"fieldPath": "id",
@ -59,22 +59,60 @@
"notNull": false
},
{
"fieldPath": "data",
"columnName": "data",
"affinity": "BLOB",
"fieldPath": "dataJson",
"columnName": "dataJson",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "vodCollect",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `vodId` TEXT, `updateTime` INTEGER NOT NULL, `sourceKey` TEXT, `name` TEXT, `pic` TEXT)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "dataJson",
"columnName": "dataJson",
"fieldPath": "vodId",
"columnName": "vodId",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "testMigration",
"columnName": "testMigration",
"fieldPath": "updateTime",
"columnName": "updateTime",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "sourceKey",
"columnName": "sourceKey",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "pic",
"columnName": "pic",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
@ -90,7 +128,7 @@
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '6d7179059b55b28fda16a36a445f306f')"
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'd1c2780b5424f0e960fe2364f63c86b8')"
]
}
}

@ -55,6 +55,9 @@
<activity
android:name=".ui.activity.HistoryActivity"
android:screenOrientation="landscape" />
<activity
android:name=".ui.activity.CollectActivity"
android:screenOrientation="landscape" />
<receiver android:name=".receiver.SearchReceiver">
<intent-filter>

@ -1,11 +1,5 @@
package com.github.tvbox.osc.bean;
import com.github.tvbox.osc.cache.RoomDataManger;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.HashMap;
/**
* @author pj567
* @date :2020/12/18

@ -47,6 +47,7 @@ public class VodInfo implements Serializable {
public String playFlag = null;
public int playIndex = 0;
public String sourceKey;
public String playerCfg = "";
public void setVideo(Movie.Video video) {
last = video.last;

@ -13,7 +13,6 @@ import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
@ -52,7 +51,6 @@ public class RoomDataManger {
record.sourceKey = sourceKey;
record.vodId = vodInfo.id;
record.updateTime = System.currentTimeMillis();
record.data = null;
record.dataJson = getVodInfoGson().toJson(vodInfo);
AppDataManager.get().getVodRecordDao().insert(record);
}
@ -63,7 +61,7 @@ public class RoomDataManger {
if (record != null && record.dataJson != null && !TextUtils.isEmpty(record.dataJson)) {
VodInfo vodInfo = getVodInfoGson().fromJson(record.dataJson, new TypeToken<VodInfo>() {
}.getType());
if (vodInfo.name == null || vodInfo.type == null)
if (vodInfo.name == null)
return null;
return vodInfo;
}
@ -104,4 +102,26 @@ public class RoomDataManger {
}
return vodInfoList;
}
public static void insertVodCollect(String sourceKey, VodInfo vodInfo) {
VodCollect record = AppDataManager.get().getVodCollectDao().getVodCollect(sourceKey, vodInfo.id);
if (record != null) {
return;
}
record = new VodCollect();
record.sourceKey = sourceKey;
record.vodId = vodInfo.id;
record.updateTime = System.currentTimeMillis();
record.name = vodInfo.name;
record.pic = vodInfo.pic;
AppDataManager.get().getVodCollectDao().insert(record);
}
public static void deleteVodCollect(int id) {
AppDataManager.get().getVodCollectDao().delete(id);
}
public static List<VodCollect> getAllVodCollect() {
return AppDataManager.get().getVodCollectDao().getAll();
}
}

@ -0,0 +1,31 @@
package com.github.tvbox.osc.cache;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import java.io.Serializable;
@Entity(tableName = "vodCollect")
public class VodCollect implements Serializable {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "vodId")
public String vodId;
@ColumnInfo(name = "updateTime")
public long updateTime;
@ColumnInfo(name = "sourceKey")
public String sourceKey;
@ColumnInfo(name = "name")
public String name;
@ColumnInfo(name = "pic")
public String pic;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}

@ -0,0 +1,35 @@
package com.github.tvbox.osc.cache;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import java.util.List;
/**
* @author pj567
* @date :2021/1/7
* @description:
*/
@Dao
public interface VodCollectDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
long insert(VodCollect record);
@Query("select * from vodCollect order by updateTime desc")
List<VodCollect> getAll();
@Query("select * from vodCollect where `id`=:id")
VodCollect getVodCollect(int id);
@Query("delete from vodCollect where `id`=:id")
void delete(int id);
@Query("select * from vodCollect where `sourceKey`=:sourceKey and `vodId`=:vodId")
VodCollect getVodCollect(String sourceKey, String vodId);
@Delete
int delete(VodCollect record);
}

@ -21,11 +21,8 @@ public class VodRecord implements Serializable {
public long updateTime;
@ColumnInfo(name = "sourceKey")
public String sourceKey;
public byte[] data;
public String dataJson;
public int testMigration;
public int getId() {
return id;
}

@ -5,6 +5,8 @@ import androidx.room.RoomDatabase;
import com.github.tvbox.osc.cache.Cache;
import com.github.tvbox.osc.cache.CacheDao;
import com.github.tvbox.osc.cache.VodCollect;
import com.github.tvbox.osc.cache.VodCollectDao;
import com.github.tvbox.osc.cache.VodRecord;
import com.github.tvbox.osc.cache.VodRecordDao;
@ -15,9 +17,11 @@ import com.github.tvbox.osc.cache.VodRecordDao;
* @author pj567
* @since 2020/5/15
*/
@Database(entities = {Cache.class, VodRecord.class}, version = 1)
@Database(entities = {Cache.class, VodRecord.class, VodCollect.class}, version = 1)
public abstract class AppDataBase extends RoomDatabase {
public abstract CacheDao getCacheDao();
public abstract VodRecordDao getVodRecordDao();
public abstract VodCollectDao getVodCollectDao();
}

@ -19,7 +19,7 @@ import com.github.tvbox.osc.base.App;
* @since 2020/5/15
*/
public class AppDataManager {
private static final String DB_NAME = "tvbox_v1.db";
private static final String DB_NAME = "tvbox_v2.db";
private static AppDataManager manager;
private static AppDataBase dbInstance;

@ -21,10 +21,6 @@ import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;
import org.jetbrains.annotations.NotNull;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Iterator;
import xyz.doikki.videoplayer.player.VideoView;
import xyz.doikki.videoplayer.util.PlayerUtils;

@ -0,0 +1,143 @@
package com.github.tvbox.osc.ui.activity;
import android.content.Intent;
import android.graphics.Color;
import android.view.View;
import android.view.animation.BounceInterpolator;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.github.tvbox.osc.R;
import com.github.tvbox.osc.base.BaseActivity;
import com.github.tvbox.osc.cache.RoomDataManger;
import com.github.tvbox.osc.cache.VodCollect;
import com.github.tvbox.osc.event.RefreshEvent;
import com.github.tvbox.osc.ui.adapter.CollectAdapter;
import com.github.tvbox.osc.util.FastClickCheckUtil;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7GridLayoutManager;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
public class CollectActivity extends BaseActivity {
private TextView tvDel;
private TextView tvDelTip;
private TvRecyclerView mGridView;
private CollectAdapter collectAdapter;
private boolean delMode = false;
@Override
protected int getLayoutResID() {
return R.layout.activity_collect;
}
@Override
protected void init() {
initView();
initData();
}
private void toggleDelMode() {
delMode = !delMode;
tvDelTip.setVisibility(delMode ? View.VISIBLE : View.GONE);
tvDel.setTextColor(delMode ? getResources().getColor(R.color.color_FF0057) : Color.WHITE);
}
private void initView() {
EventBus.getDefault().register(this);
tvDel = findViewById(R.id.tvDel);
tvDelTip = findViewById(R.id.tvDelTip);
mGridView = findViewById(R.id.mGridView);
mGridView.setHasFixedSize(true);
mGridView.setLayoutManager(new V7GridLayoutManager(this.mContext, 5));
collectAdapter = new CollectAdapter();
mGridView.setAdapter(collectAdapter);
tvDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toggleDelMode();
}
});
mGridView.setOnInBorderKeyEventListener(new TvRecyclerView.OnInBorderKeyEventListener() {
@Override
public boolean onInBorderKeyEvent(int direction, View focused) {
if (direction == View.FOCUS_UP) {
tvDel.setFocusable(true);
tvDel.requestFocus();
}
return false;
}
});
mGridView.setOnItemListener(new TvRecyclerView.OnItemListener() {
@Override
public void onItemPreSelected(TvRecyclerView parent, View itemView, int position) {
itemView.animate().scaleX(1.0f).scaleY(1.0f).setDuration(300).setInterpolator(new BounceInterpolator()).start();
}
@Override
public void onItemSelected(TvRecyclerView parent, View itemView, int position) {
itemView.animate().scaleX(1.05f).scaleY(1.05f).setDuration(300).setInterpolator(new BounceInterpolator()).start();
}
@Override
public void onItemClick(TvRecyclerView parent, View itemView, int position) {
}
});
collectAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
FastClickCheckUtil.check(view);
VodCollect vodInfo = collectAdapter.getData().get(position);
if (vodInfo != null) {
if (delMode) {
collectAdapter.remove(position);
RoomDataManger.deleteVodCollect(vodInfo.getId());
} else {
Intent newIntent = new Intent(mContext, SearchActivity.class);
newIntent.putExtra("title", vodInfo.name);
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(newIntent);
}
}
}
});
}
private void initData() {
List<VodCollect> allVodRecord = RoomDataManger.getAllVodCollect();
List<VodCollect> vodInfoList = new ArrayList<>();
for (VodCollect vodInfo : allVodRecord) {
vodInfoList.add(vodInfo);
}
collectAdapter.setNewData(vodInfoList);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void refresh(RefreshEvent event) {
if (event.type == RefreshEvent.TYPE_HISTORY_REFRESH) {
initData();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Override
public void onBackPressed() {
if (delMode) {
toggleDelMode();
return;
}
super.onBackPressed();
}
}

@ -8,6 +8,7 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
@ -70,6 +71,7 @@ public class DetailActivity extends BaseActivity {
private TextView tvDes;
private TextView tvPlay;
private TextView tvQuickSearch;
private TextView tvCollect;
private TvRecyclerView mGridViewFlag;
private TvRecyclerView mGridView;
private LinearLayout mEmptyPlayList;
@ -109,6 +111,7 @@ public class DetailActivity extends BaseActivity {
tvDirector = findViewById(R.id.tvDirector);
tvDes = findViewById(R.id.tvDes);
tvPlay = findViewById(R.id.tvPlay);
tvCollect = findViewById(R.id.tvCollect);
tvQuickSearch = findViewById(R.id.tvQuickSearch);
mEmptyPlayList = findViewById(R.id.mEmptyPlaylist);
mGridView = findViewById(R.id.mGridView);
@ -138,6 +141,13 @@ public class DetailActivity extends BaseActivity {
quickSearchDialog.show();
}
});
tvCollect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RoomDataManger.insertVodCollect(sourceKey, vodInfo);
Toast.makeText(DetailActivity.this, "已加入收藏夹", Toast.LENGTH_SHORT).show();
}
});
mGridView.setOnItemListener(new TvRecyclerView.OnItemListener() {
@Override
public void onItemPreSelected(TvRecyclerView parent, View itemView, int position) {
@ -301,9 +311,11 @@ public class DetailActivity extends BaseActivity {
if (vodInfoRecord != null) {
vodInfo.playIndex = Math.max(vodInfoRecord.playIndex, 0);
vodInfo.playFlag = vodInfoRecord.playFlag;
vodInfo.playerCfg = vodInfoRecord.playerCfg;
} else {
vodInfo.playIndex = 0;
vodInfo.playFlag = null;
vodInfo.playerCfg = "";
}
if (vodInfo.playFlag == null || !vodInfo.seriesMap.containsKey(vodInfo.playFlag))

@ -37,7 +37,6 @@ import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.AbsCallback;
import com.lzy.okgo.model.Response;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7GridLayoutManager;
import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;
import org.greenrobot.eventbus.EventBus;

@ -0,0 +1,46 @@
package com.github.tvbox.osc.ui.adapter;
import android.text.TextUtils;
import android.widget.ImageView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.github.tvbox.osc.R;
import com.github.tvbox.osc.cache.VodCollect;
import com.github.tvbox.osc.picasso.RoundTransformation;
import com.github.tvbox.osc.util.MD5;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import me.jessyan.autosize.utils.AutoSizeUtils;
public class CollectAdapter extends BaseQuickAdapter<VodCollect, BaseViewHolder> {
public CollectAdapter() {
super(R.layout.item_grid, new ArrayList<>());
}
@Override
protected void convert(BaseViewHolder helper, VodCollect item) {
helper.setVisible(R.id.tvYear, false);
helper.setVisible(R.id.tvLang, false);
helper.setVisible(R.id.tvArea, false);
helper.setVisible(R.id.tvNote, false);
helper.setText(R.id.tvName, item.name);
ImageView ivThumb = helper.getView(R.id.ivThumb);
//由于部分电视机使用glide报错
if (!TextUtils.isEmpty(item.pic)) {
Picasso.get()
.load(item.pic)
.transform(new RoundTransformation(MD5.string2MD5(item.pic + item.name))
.centerCorp(true)
.override(AutoSizeUtils.mm2px(mContext, 300), AutoSizeUtils.mm2px(mContext, 400))
.roundRadius(AutoSizeUtils.mm2px(mContext, 10), RoundTransformation.RoundType.ALL))
.placeholder(R.drawable.img_loading_placeholder)
.error(R.drawable.img_loading_placeholder)
.into(ivThumb);
} else {
ivThumb.setImageResource(R.drawable.img_loading_placeholder);
}
}
}

@ -2,11 +2,9 @@ package com.github.tvbox.osc.ui.dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.DiffUtil;
import com.github.tvbox.osc.R;
import com.github.tvbox.osc.ui.adapter.ApiHistoryDialogAdapter;

@ -11,7 +11,6 @@ import com.github.tvbox.osc.R;
import com.github.tvbox.osc.bean.Movie;
import com.github.tvbox.osc.event.RefreshEvent;
import com.github.tvbox.osc.ui.adapter.QuickSearchAdapter;
import com.github.tvbox.osc.ui.adapter.SearchAdapter;
import com.github.tvbox.osc.ui.adapter.SearchWordAdapter;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;

@ -75,8 +75,8 @@ public class ModelSettingFragment extends BaseLazyFragment {
tvXWalkDown.setText(XWalkUtils.xWalkLibExist(mContext) ? "已下载" : "未下载");
tvApi.setText(Hawk.get(HawkConfig.API_URL, ""));
tvHomeApi.setText(ApiConfig.get().getHomeSourceBean().getName());
tvPlay.setText(getPlayerName(Hawk.get(HawkConfig.PLAY_TYPE, 0)));
tvRender.setText(getRenderName(Hawk.get(HawkConfig.PLAY_RENDER, 0)));
tvPlay.setText(PlayerHelper.getPlayerName(Hawk.get(HawkConfig.PLAY_TYPE, 0)));
tvRender.setText(PlayerHelper.getRenderName(Hawk.get(HawkConfig.PLAY_RENDER, 0)));
findViewById(R.id.llXWalkCore).setVisibility(Hawk.get(HawkConfig.PARSE_WEBVIEW, true) ? View.GONE : View.VISIBLE);
findViewById(R.id.llDebug).setOnClickListener(new View.OnClickListener() {
@Override
@ -180,7 +180,7 @@ public class ModelSettingFragment extends BaseLazyFragment {
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
((BaseActivity)mActivity).hideSysBar();
((BaseActivity) mActivity).hideSysBar();
}
});
dialog.show();
@ -245,13 +245,13 @@ public class ModelSettingFragment extends BaseLazyFragment {
@Override
public void click(Integer value, int pos) {
Hawk.put(HawkConfig.PLAY_TYPE, value);
tvPlay.setText(getPlayerName(value));
tvPlay.setText(PlayerHelper.getPlayerName(value));
PlayerHelper.init();
}
@Override
public String getDisplay(Integer val) {
return getPlayerName(val);
return PlayerHelper.getPlayerName(val);
}
}, new DiffUtil.ItemCallback<Integer>() {
@Override
@ -281,13 +281,13 @@ public class ModelSettingFragment extends BaseLazyFragment {
@Override
public void click(Integer value, int pos) {
Hawk.put(HawkConfig.PLAY_RENDER, value);
tvRender.setText(getRenderName(value));
tvRender.setText(PlayerHelper.getRenderName(value));
PlayerHelper.init();
}
@Override
public String getDisplay(Integer val) {
return getRenderName(val);
return PlayerHelper.getRenderName(val);
}
}, new DiffUtil.ItemCallback<Integer>() {
@Override
@ -311,24 +311,6 @@ public class ModelSettingFragment extends BaseLazyFragment {
};
}
private String getPlayerName(int playType) {
if (playType == 1) {
return "IJK播放器";
} else if (playType == 2) {
return "Exo播放器";
} else {
return "系统播放器";
}
}
private String getRenderName(int renderType) {
if (renderType == 1) {
return "SurfaceView";
} else {
return "TextureView";
}
}
@Override
public void onDestroyView() {
super.onDestroyView();

@ -10,6 +10,7 @@ import com.github.tvbox.osc.R;
import com.github.tvbox.osc.api.ApiConfig;
import com.github.tvbox.osc.base.BaseLazyFragment;
import com.github.tvbox.osc.event.ServerEvent;
import com.github.tvbox.osc.ui.activity.CollectActivity;
import com.github.tvbox.osc.ui.activity.HistoryActivity;
import com.github.tvbox.osc.ui.activity.LivePlayActivity;
import com.github.tvbox.osc.ui.activity.PushActivity;
@ -44,6 +45,7 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen
private LinearLayout tvSearch;
private LinearLayout tvSetting;
private LinearLayout tvHistory;
private LinearLayout tvCollect;
private LinearLayout tvPush;
public static UserFragment newInstance() {
@ -61,6 +63,7 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen
tvLive = findViewById(R.id.tvLive);
tvSearch = findViewById(R.id.tvSearch);
tvSetting = findViewById(R.id.tvSetting);
tvCollect = findViewById(R.id.tvFavorite);
tvHistory = findViewById(R.id.tvHistory);
tvPush = findViewById(R.id.tvPush);
tvLive.setOnClickListener(this);
@ -68,11 +71,13 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen
tvSetting.setOnClickListener(this);
tvHistory.setOnClickListener(this);
tvPush.setOnClickListener(this);
tvCollect.setOnClickListener(this);
tvLive.setOnFocusChangeListener(focusChangeListener);
tvSearch.setOnFocusChangeListener(focusChangeListener);
tvSetting.setOnFocusChangeListener(focusChangeListener);
tvHistory.setOnFocusChangeListener(focusChangeListener);
tvPush.setOnFocusChangeListener(focusChangeListener);
tvCollect.setOnFocusChangeListener(focusChangeListener);
TvRecyclerView tvHotList = findViewById(R.id.tvHotList);
HomeHotVodAdapter adapter = new HomeHotVodAdapter();
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@ -185,6 +190,8 @@ public class UserFragment extends BaseLazyFragment implements View.OnClickListen
jumpActivity(HistoryActivity.class);
} else if (v.getId() == R.id.tvPush) {
jumpActivity(PushActivity.class);
} else if (v.getId() == R.id.tvFavorite) {
jumpActivity(CollectActivity.class);
}
}

@ -5,16 +5,13 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.text.TextUtils;
import com.github.tvbox.osc.api.ApiConfig;
import com.github.tvbox.osc.bean.MovieSort;
import com.github.tvbox.osc.bean.SourceBean;
import com.github.tvbox.osc.server.ControlManager;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.regex.Pattern;

@ -110,4 +110,47 @@ public class PlayerHelper {
.setRenderViewFactory(renderViewFactory)
.build());
}
public static String getPlayerName(int playType) {
if (playType == 1) {
return "IJK播放器";
} else if (playType == 2) {
return "Exo播放器";
} else {
return "系统播放器";
}
}
public static String getRenderName(int renderType) {
if (renderType == 1) {
return "SurfaceView";
} else {
return "TextureView";
}
}
public static String getScaleName(int screenScaleType) {
String scaleText = "默认";
switch (screenScaleType) {
case VideoView.SCREEN_SCALE_DEFAULT:
scaleText = "默认";
break;
case VideoView.SCREEN_SCALE_16_9:
scaleText = "16:9";
break;
case VideoView.SCREEN_SCALE_4_3:
scaleText = "4:3";
break;
case VideoView.SCREEN_SCALE_MATCH_PARENT:
scaleText = "填充";
break;
case VideoView.SCREEN_SCALE_ORIGINAL:
scaleText = "原始";
break;
case VideoView.SCREEN_SCALE_CENTER_CROP:
scaleText = "裁剪";
break;
}
return scaleText;
}
}

@ -0,0 +1,76 @@
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingLeft="@dimen/vs_50"
android:paddingTop="@dimen/vs_20"
android:paddingRight="@dimen/vs_50"
android:paddingBottom="@dimen/vs_20">
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_50"
android:drawablePadding="@dimen/vs_10"
android:gravity="center"
android:text="收藏夹"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_34"
android:textStyle="bold" />
<Space
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@+id/tvDelTip"
android:layout_width="wrap_content"
android:layout_height="@dimen/vs_50"
android:layout_gravity="center"
android:layout_marginRight="@dimen/vs_10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:text="确定键删除当前选中收藏"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24"
android:visibility="gone" />
<TextView
android:id="@+id/tvDel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/shape_user_focus"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:padding="@dimen/vs_10"
android:text="删除收藏"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
</LinearLayout>
<com.owen.tvrecyclerview.widget.TvRecyclerView
android:id="@+id/mGridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingLeft="@dimen/vs_60"
android:paddingTop="@dimen/vs_10"
android:paddingRight="@dimen/vs_60"
android:paddingBottom="@dimen/vs_10"
app:tv_horizontalSpacingWithMargins="@dimen/vs_10"
app:tv_selectedItemIsCentered="true"
app:tv_verticalSpacingWithMargins="@dimen/vs_10" />
</LinearLayout>

@ -42,7 +42,8 @@
android:gravity="center"
android:text="确定键删除当前选中记录"
android:textColor="@android:color/white"
android:textSize="@dimen/ts_24" />
android:textSize="@dimen/ts_24"
android:visibility="gone" />
<TextView
android:id="@+id/tvDel"

Loading…
Cancel
Save