Add keep - part 2

pull/137/head
FongMi 3 years ago
parent 973a584403
commit 5e0bb16f20
  1. 3
      app/src/leanback/java/com/fongmi/android/tv/bean/Func.java
  2. 31
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  3. 7
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  4. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomVerticalGridView.java
  5. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java
  6. 24
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/DescDialog.java
  7. BIN
      app/src/leanback/res/drawable-hdpi/ic_keep.png
  8. BIN
      app/src/leanback/res/drawable-mdpi/ic_keep.png
  9. BIN
      app/src/leanback/res/drawable-xhdpi/ic_keep.png
  10. BIN
      app/src/leanback/res/drawable-xxhdpi/ic_keep.png
  11. 16
      app/src/leanback/res/layout/activity_detail.xml
  12. 4
      app/src/leanback/res/layout/dialog_config.xml
  13. 10
      app/src/leanback/res/layout/dialog_desc.xml
  14. 1
      app/src/leanback/res/values-zh-rCN/strings.xml
  15. 1
      app/src/leanback/res/values-zh-rTW/strings.xml
  16. 1
      app/src/leanback/res/values/strings.xml
  17. 17
      app/src/main/java/com/fongmi/android/tv/bean/Keep.java
  18. 3
      app/src/main/java/com/fongmi/android/tv/db/dao/KeepDao.java
  19. 10
      app/src/main/res/drawable/ic_desc.xml
  20. 10
      app/src/main/res/drawable/ic_keep_added.xml
  21. 10
      app/src/main/res/drawable/ic_keep_not_yet.xml
  22. 2
      app/src/main/res/values-zh-rCN/strings.xml
  23. 2
      app/src/main/res/values-zh-rTW/strings.xml
  24. 2
      app/src/main/res/values/strings.xml

@ -40,6 +40,9 @@ public class Func {
case R.string.home_live:
this.drawable = R.drawable.ic_live;
break;
case R.string.home_keep:
this.drawable = R.drawable.ic_keep;
break;
case R.string.home_push:
this.drawable = R.drawable.ic_push;
break;

@ -40,6 +40,7 @@ import com.fongmi.android.tv.player.ExoUtil;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.ui.custom.CustomKeyDown;
import com.fongmi.android.tv.ui.custom.TrackSelectionDialog;
import com.fongmi.android.tv.ui.custom.dialog.DescDialog;
import com.fongmi.android.tv.ui.presenter.EpisodePresenter;
import com.fongmi.android.tv.ui.presenter.FlagPresenter;
import com.fongmi.android.tv.ui.presenter.GroupPresenter;
@ -254,11 +255,13 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
mBinding.video.requestFocus();
getPart(item.getVodName());
checkHistory();
checkKeep();
}
private void setText(TextView view, int resId, String text) {
if (text.isEmpty()) view.setVisibility(View.GONE);
else view.setText(ResUtil.getString(resId, text));
view.setTag(text);
}
private void setFlagActivated(Vod.Flag item) {
@ -349,17 +352,15 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
}
private void onDesc() {
DescDialog.show(this, mBinding.content.getTag().toString());
}
private void onKeep() {
Keep keep = new Keep();
keep.setKey(getHistoryKey());
keep.setCid(ApiConfig.getCid());
keep.setSiteName(ApiConfig.getSiteName(getKey()));
keep.setVodPic(mBinding.video.getTag().toString());
keep.setVodName(mBinding.name.getText().toString());
keep.save();
Keep keep = Keep.find(getHistoryKey());
Notify.show(keep != null ? "已取消收藏" : "已加入收藏");
if (keep != null) keep.delete();
else createKeep();
checkKeep();
}
private void checkNext() {
@ -511,6 +512,20 @@ public class DetailActivity extends BaseActivity implements CustomKeyDown.Listen
RefreshEvent.history();
}
private void checkKeep() {
mBinding.keep.setCompoundDrawablesRelativeWithIntrinsicBounds(Keep.find(getHistoryKey()) == null ? R.drawable.ic_keep_not_yet : R.drawable.ic_keep_added, 0, 0, 0);
}
private void createKeep() {
Keep keep = new Keep();
keep.setKey(getHistoryKey());
keep.setCid(ApiConfig.getCid());
keep.setVodPic(mBinding.video.getTag().toString());
keep.setVodName(mBinding.name.getText().toString());
keep.setCreateTime(System.currentTimeMillis());
keep.save();
}
private final Runnable mHideCenter = new Runnable() {
@Override
public void run() {

@ -150,6 +150,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
adapter.add(Func.create(R.string.home_vod));
adapter.add(Func.create(R.string.home_live));
adapter.add(Func.create(R.string.home_search));
adapter.add(Func.create(R.string.home_keep));
adapter.add(Func.create(R.string.home_push));
adapter.add(Func.create(R.string.home_setting));
return new ListRow(adapter);
@ -186,12 +187,12 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
case R.string.home_vod:
VodActivity.start(this, mViewModel.getResult().getValue());
break;
case R.string.home_live:
KeepActivity.start(this);
break;
case R.string.home_search:
SearchActivity.start(this);
break;
case R.string.home_keep:
KeepActivity.start(this);
break;
case R.string.home_push:
PushActivity.start(this);
break;

@ -74,7 +74,7 @@ public class CustomVerticalGridView extends VerticalGridView {
}
public boolean moveToTop() {
if (views == null || getSelectedPosition() == 0) return false;
if (views == null || getSelectedPosition() == 0 || getAdapter() == null || getAdapter().getItemCount() == 0) return false;
for (View view : views) view.setVisibility(View.VISIBLE);
for (View view : views) if (view.getId() == R.id.recycler) view.requestFocus();
scrollToPosition(0);

@ -56,7 +56,7 @@ public class ConfigDialog implements DialogInterface.OnDismissListener {
String address = Server.get().getAddress(false);
binding.text.setText(Prefers.getUrl());
binding.text.setSelection(binding.text.getText().length());
binding.code.setImageBitmap(QRCode.getBitmap(address, 170, 0));
binding.code.setImageBitmap(QRCode.getBitmap(address, 180, 0));
binding.info.setText(ResUtil.getString(R.string.push_info, address).replace(",", "\n"));
}

@ -0,0 +1,24 @@
package com.fongmi.android.tv.ui.custom.dialog;
import android.app.Activity;
import android.view.LayoutInflater;
import androidx.appcompat.app.AlertDialog;
import com.fongmi.android.tv.databinding.DialogDescBinding;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class DescDialog {
public static void show(Activity activity, String desc) {
new DescDialog().create(activity, desc);
}
public void create(Activity activity, String desc) {
DialogDescBinding binding = DialogDescBinding.inflate(LayoutInflater.from(activity));
AlertDialog dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create();
dialog.getWindow().setDimAmount(0);
binding.text.setText(desc);
dialog.show();
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

@ -160,7 +160,7 @@
<LinearLayout
android:id="@+id/row2"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/name"
android:layout_alignBottom="@+id/video"
@ -172,22 +172,28 @@
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:background="@drawable/selector_item"
android:drawablePadding="6dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="簡介"
android:gravity="center"
android:text="@string/detail_desc"
android:textColor="@color/white"
android:textSize="16sp" />
android:textSize="16sp"
app:drawableStartCompat="@drawable/ic_desc" />
<TextView
android:id="@+id/keep"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_item"
android:drawablePadding="6dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:text="收藏"
android:gravity="center"
android:text="@string/detail_keep"
android:textColor="@color/white"
android:textSize="16sp" />
android:textSize="16sp"
app:drawableStartCompat="@drawable/ic_keep_added" />
</LinearLayout>

@ -7,8 +7,8 @@
<ImageView
android:id="@+id/code"
android:layout_width="170dp"
android:layout_height="170dp"
android:layout_width="180dp"
android:layout_height="180dp"
android:scaleType="fitXY" />
<TextView

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:letterSpacing="0.05"
android:lineSpacingExtra="8dp"
android:padding="16dp"
android:textColor="@color/grey_800"
android:textSize="16sp" />

@ -4,6 +4,7 @@
<string name="home_vod">点播</string>
<string name="home_live">直播</string>
<string name="home_search">搜索</string>
<string name="home_keep">收藏</string>
<string name="home_push">推送</string>
<string name="home_setting">设定</string>
<string name="home_history">最近观看</string>

@ -4,6 +4,7 @@
<string name="home_vod">點播</string>
<string name="home_live">直播</string>
<string name="home_search">搜尋</string>
<string name="home_keep">收藏</string>
<string name="home_push">推送</string>
<string name="home_setting">設定</string>
<string name="home_history">最近觀看</string>

@ -4,6 +4,7 @@
<string name="home_vod">Vod</string>
<string name="home_live">Live</string>
<string name="home_search">Search</string>
<string name="home_keep">Keep</string>
<string name="home_push">Push</string>
<string name="home_setting">Setting</string>
<string name="home_history">History</string>

@ -4,6 +4,7 @@ import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.db.AppDatabase;
import java.util.List;
@ -14,7 +15,6 @@ public class Keep {
@NonNull
@PrimaryKey
private String key;
private String siteName;
private String vodName;
private String vodPic;
private long createTime;
@ -29,14 +29,6 @@ public class Keep {
this.key = key;
}
public String getSiteName() {
return siteName;
}
public void setSiteName(String siteName) {
this.siteName = siteName;
}
public String getVodName() {
return vodName;
}
@ -77,12 +69,17 @@ public class Keep {
return getKey().substring(getKey().lastIndexOf(AppDatabase.SYMBOL) + AppDatabase.SYMBOL.length());
}
public static Keep find(String key) {
return AppDatabase.get().getKeepDao().find(ApiConfig.getCid(), key);
}
public static List<Keep> getAll() {
return AppDatabase.get().getKeepDao().getAll();
}
public void save() {
public Keep save() {
AppDatabase.get().getKeepDao().insert(this);
return this;
}
public void delete() {

@ -13,6 +13,9 @@ public abstract class KeepDao extends BaseDao<Keep> {
@Query("SELECT * FROM Keep ORDER BY createTime DESC")
public abstract List<Keep> getAll();
@Query("SELECT * FROM Keep WHERE cid = :cid AND `key` = :key")
public abstract Keep find(int cid, String key);
@Query("DELETE FROM Keep WHERE cid = :cid AND `key` = :key")
public abstract void delete(int cid, String key);

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M14,2L6,2c-1.1,0 -1.99,0.9 -1.99,2L4,20c0,1.1 0.89,2 1.99,2L18,22c1.1,0 2,-0.9 2,-2L20,8l-6,-6zM16,18L8,18v-2h8v2zM16,14L8,14v-2h8v2zM13,9L13,3.5L18.5,9L13,9z" />
</vector>

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M14.43,10l-2.43,-8l-2.43,8l-7.57,0l6.18,4.41l-2.35,7.59l6.17,-4.69l6.18,4.69l-2.35,-7.59l6.17,-4.41z" />
</vector>

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M22,9.24l-7.19,-0.62L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21 12,17.27 18.18,21l-1.63,-7.03L22,9.24zM12,15.4l-3.76,2.27 1,-4.28 -3.32,-2.88 4.38,-0.38L12,6.1l1.71,4.04 4.38,0.38 -3.32,2.88 1,4.28L12,15.4z" />
</vector>

@ -22,6 +22,8 @@
<string name="detail_director">导演:<xliff:g name="name">%s</xliff:g></string>
<string name="detail_actor">演员:<xliff:g name="name">%s</xliff:g></string>
<string name="detail_content">简介:<xliff:g name="name">%s</xliff:g></string>
<string name="detail_desc">简介</string>
<string name="detail_keep">收藏</string>
<!-- Play -->
<string name="play">播放</string>

@ -22,6 +22,8 @@
<string name="detail_director">導演:<xliff:g name="name">%s</xliff:g></string>
<string name="detail_actor">演員:<xliff:g name="name">%s</xliff:g></string>
<string name="detail_content">簡介:<xliff:g name="name">%s</xliff:g></string>
<string name="detail_desc">簡介</string>
<string name="detail_keep">收藏</string>
<!-- Play -->
<string name="play">播放</string>

@ -22,6 +22,8 @@
<string name="detail_director">Director: <xliff:g name="name">%s</xliff:g></string>
<string name="detail_actor">Actor: <xliff:g name="name">%s</xliff:g></string>
<string name="detail_content">Summary: <xliff:g name="name">%s</xliff:g></string>
<string name="detail_desc">Summary</string>
<string name="detail_keep">Keep</string>
<!-- Play -->
<string name="play">Play</string>

Loading…
Cancel
Save