Optimize episode width

release
jhengazuki 7 months ago
parent 99c1188d42
commit 2c911fc28e
  1. 12
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/EpisodePresenter.java
  2. 12
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/PartPresenter.java
  3. 2
      app/src/leanback/res/layout/adapter_episode.xml
  4. 4
      app/src/mobile/java/com/fongmi/android/tv/Product.java
  5. 13
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/EpisodeAdapter.java
  6. 1
      app/src/mobile/java/com/fongmi/android/tv/ui/base/ViewType.java
  7. 6
      app/src/mobile/java/com/fongmi/android/tv/ui/holder/EpisodeHoriHolder.java
  8. 28
      app/src/mobile/java/com/fongmi/android/tv/ui/holder/EpisodeVertHolder.java
  9. 12
      app/src/mobile/res/layout/adapter_episode_vert.xml

@ -6,18 +6,20 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.leanback.widget.Presenter;
import com.fongmi.android.tv.Product;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.databinding.AdapterEpisodeBinding;
import com.fongmi.android.tv.utils.ResUtil;
public class EpisodePresenter extends Presenter {
private final OnClickListener mListener;
private final OnClickListener listener;
private final int maxWidth;
private int nextFocusDown;
private int nextFocusUp;
public EpisodePresenter(OnClickListener listener) {
this.mListener = listener;
this.listener = listener;
this.maxWidth = ResUtil.getScreenWidth() - ResUtil.dp2px(48);
}
public interface OnClickListener {
@ -41,12 +43,12 @@ public class EpisodePresenter extends Presenter {
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object object) {
Episode item = (Episode) object;
ViewHolder holder = (ViewHolder) viewHolder;
holder.binding.text.setMaxEms(Product.getEms());
holder.binding.text.setMaxWidth(maxWidth);
holder.binding.text.setNextFocusUpId(nextFocusUp);
holder.binding.text.setNextFocusDownId(nextFocusDown);
holder.binding.text.setActivated(item.isActivated());
holder.binding.text.setText(item.getDesc().concat(item.getName()));
setOnClickListener(holder, view -> mListener.onItemClick(item));
setOnClickListener(holder, view -> listener.onItemClick(item));
}
@Override

@ -6,16 +6,18 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.leanback.widget.Presenter;
import com.fongmi.android.tv.Product;
import com.fongmi.android.tv.databinding.AdapterPartBinding;
import com.fongmi.android.tv.utils.ResUtil;
public class PartPresenter extends Presenter {
private final OnClickListener mListener;
private final OnClickListener listener;
private final int maxWidth;
private int nextFocusUp;
public PartPresenter(OnClickListener listener) {
this.mListener = listener;
this.listener = listener;
this.maxWidth = ResUtil.getScreenWidth() - ResUtil.dp2px(48);
}
public interface OnClickListener {
@ -36,9 +38,9 @@ public class PartPresenter extends Presenter {
String text = object.toString();
ViewHolder holder = (ViewHolder) viewHolder;
holder.binding.text.setText(text);
holder.binding.text.setMaxEms(Product.getEms());
holder.binding.text.setMaxWidth(maxWidth);
holder.binding.text.setNextFocusUpId(nextFocusUp);
setOnClickListener(holder, view -> mListener.onItemClick(text));
setOnClickListener(holder, view -> listener.onItemClick(text));
}
@Override

@ -2,7 +2,7 @@
<com.google.android.material.textview.MaterialTextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_item"
android:ellipsize="marquee"

@ -42,8 +42,4 @@ public class Product {
int height = (int) (width / style.getRatio());
return new int[]{width, height};
}
public static int getEms() {
return Math.min(Math.round((float) ResUtil.getScreenWidth() / ResUtil.sp2px(20)), 25);
}
}

@ -9,12 +9,10 @@ import androidx.recyclerview.widget.RecyclerView;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.databinding.AdapterEpisodeGridBinding;
import com.fongmi.android.tv.databinding.AdapterEpisodeHoriBinding;
import com.fongmi.android.tv.databinding.AdapterEpisodeVertBinding;
import com.fongmi.android.tv.ui.base.BaseEpisodeHolder;
import com.fongmi.android.tv.ui.base.ViewType;
import com.fongmi.android.tv.ui.holder.EpisodeGridHolder;
import com.fongmi.android.tv.ui.holder.EpisodeHoriHolder;
import com.fongmi.android.tv.ui.holder.EpisodeVertHolder;
import java.util.ArrayList;
import java.util.List;
@ -98,13 +96,10 @@ public class EpisodeAdapter extends RecyclerView.Adapter<BaseEpisodeHolder> {
@NonNull
@Override
public BaseEpisodeHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
switch (viewType) {
case ViewType.HORI:
return new EpisodeHoriHolder(AdapterEpisodeHoriBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false), mListener);
case ViewType.VERT:
return new EpisodeVertHolder(AdapterEpisodeVertBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false), mListener);
default:
return new EpisodeGridHolder(AdapterEpisodeGridBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false), mListener);
if (viewType == ViewType.HORI) {
return new EpisodeHoriHolder(AdapterEpisodeHoriBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false), mListener);
} else {
return new EpisodeGridHolder(AdapterEpisodeGridBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false), mListener);
}
}
}

@ -8,7 +8,6 @@ public class ViewType {
public static final int GRID = 3;
public static final int HORI = 0;
public static final int VERT = 1;
public static final int DARK = 0;
public static final int LIGHT = 1;

@ -2,26 +2,28 @@ package com.fongmi.android.tv.ui.holder;
import androidx.annotation.NonNull;
import com.fongmi.android.tv.Product;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.databinding.AdapterEpisodeHoriBinding;
import com.fongmi.android.tv.ui.adapter.EpisodeAdapter;
import com.fongmi.android.tv.ui.base.BaseEpisodeHolder;
import com.fongmi.android.tv.utils.ResUtil;
public class EpisodeHoriHolder extends BaseEpisodeHolder {
private final EpisodeAdapter.OnClickListener listener;
private final AdapterEpisodeHoriBinding binding;
private final int maxWidth;
public EpisodeHoriHolder(@NonNull AdapterEpisodeHoriBinding binding, EpisodeAdapter.OnClickListener listener) {
super(binding.getRoot());
this.binding = binding;
this.listener = listener;
this.maxWidth = ResUtil.getScreenWidth() - ResUtil.dp2px(32);
}
@Override
public void initView(Episode item) {
binding.text.setMaxEms(Product.getEms());
binding.text.setMaxWidth(maxWidth);
binding.text.setSelected(item.isSelected());
binding.text.setActivated(item.isActivated());
binding.text.setText(item.getDesc().concat(item.getName()));

@ -1,28 +0,0 @@
package com.fongmi.android.tv.ui.holder;
import androidx.annotation.NonNull;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.databinding.AdapterEpisodeVertBinding;
import com.fongmi.android.tv.ui.adapter.EpisodeAdapter;
import com.fongmi.android.tv.ui.base.BaseEpisodeHolder;
public class EpisodeVertHolder extends BaseEpisodeHolder {
private final EpisodeAdapter.OnClickListener listener;
private final AdapterEpisodeVertBinding binding;
public EpisodeVertHolder(@NonNull AdapterEpisodeVertBinding binding, EpisodeAdapter.OnClickListener listener) {
super(binding.getRoot());
this.binding = binding;
this.listener = listener;
}
@Override
public void initView(Episode item) {
binding.text.setSelected(item.isActivated());
binding.text.setActivated(item.isActivated());
binding.text.setText(item.getDesc().concat(item.getName()));
binding.text.setOnClickListener(v -> listener.onItemClick(item));
}
}

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.textview.MaterialTextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:background="@drawable/shape_item"
android:ellipsize="marquee"
android:textColor="@color/text"
android:textSize="14sp"
tools:text="20" />
Loading…
Cancel
Save