Dynamic column

pull/137/head
FongMi 4 years ago
parent 2628790828
commit a3f34afef1
  1. 3
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/ConfigDialog.java
  3. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/HistoryDialog.java
  4. 4
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SiteDialog.java
  5. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/CollectFragment.java
  6. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/fragment/VodFragment.java
  7. 18
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HistoryPresenter.java
  8. 16
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/VodPresenter.java
  9. 4
      app/src/leanback/res/layout/adapter_vod.xml
  10. 4
      app/src/main/java/com/fongmi/android/tv/utils/Prefers.java

@ -40,6 +40,7 @@ import com.fongmi.android.tv.ui.presenter.ProgressPresenter;
import com.fongmi.android.tv.ui.presenter.VodPresenter;
import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.Notify;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Updater;
import com.google.common.collect.Lists;
@ -141,7 +142,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
}
private void addVideo(Result result) {
for (List<Vod> items : Lists.partition(result.getList(), 5)) {
for (List<Vod> items : Lists.partition(result.getList(), Prefers.getColumn())) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(this));
adapter.setItems(items, null);
mAdapter.add(new ListRow(adapter));

@ -45,7 +45,7 @@ public class ConfigDialog implements DialogInterface.OnDismissListener {
private void initDialog() {
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = (int) (ResUtil.getScreenWidthPx() * 0.7f);
params.width = (int) (ResUtil.getScreenWidthPx() * 0.6f);
dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
dialog.setOnDismissListener(this);

@ -42,7 +42,7 @@ public class HistoryDialog implements ConfigAdapter.OnClickListener {
private void setDialog() {
if (adapter.getItemCount() == 0) return;
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = (int) (ResUtil.getScreenWidthPx() * 0.45f);
params.width = (int) (ResUtil.getScreenWidthPx() * 0.4f);
dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
dialog.show();

@ -46,8 +46,8 @@ public class SiteDialog implements SitePresenter.OnClickListener {
private void setDialog() {
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = (int) (ResUtil.getScreenWidthPx() * 0.45f);
params.height = (int) (ResUtil.getScreenHeightPx() * 0.8f);
params.width = (int) (ResUtil.getScreenWidthPx() * 0.4f);
params.height = (int) (ResUtil.getScreenHeightPx() * 0.64f);
dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
dialog.show();

@ -18,6 +18,7 @@ import com.fongmi.android.tv.ui.activity.DetailActivity;
import com.fongmi.android.tv.ui.custom.CustomRowPresenter;
import com.fongmi.android.tv.ui.custom.CustomSelector;
import com.fongmi.android.tv.ui.presenter.VodPresenter;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.common.collect.Lists;
import com.google.gson.Gson;
@ -62,7 +63,7 @@ public class CollectFragment extends BaseFragment implements VodPresenter.OnClic
private boolean checkLastSize(List<Vod> items) {
if (mLast == null || items.size() == 0) return false;
int size = 5 - mLast.size();
int size = Prefers.getColumn() - mLast.size();
if (size == 0) return false;
size = Math.min(size, items.size());
mLast.addAll(mLast.size(), new ArrayList<>(items.subList(0, size)));
@ -73,7 +74,7 @@ public class CollectFragment extends BaseFragment implements VodPresenter.OnClic
public void addVideo(List<Vod> items) {
if (checkLastSize(items)) return;
List<ListRow> rows = new ArrayList<>();
for (List<Vod> part : Lists.partition(items, 5)) {
for (List<Vod> part : Lists.partition(items, Prefers.getColumn())) {
mLast = new ArrayObjectAdapter(new VodPresenter(this));
mLast.setItems(part, null);
rows.add(new ListRow(mLast));

@ -25,6 +25,7 @@ import com.fongmi.android.tv.ui.custom.CustomScroller;
import com.fongmi.android.tv.ui.custom.CustomSelector;
import com.fongmi.android.tv.ui.presenter.FilterPresenter;
import com.fongmi.android.tv.ui.presenter.VodPresenter;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.common.collect.Lists;
@ -130,7 +131,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
private boolean checkLastSize(List<Vod> items) {
if (mLast == null || items.size() == 0) return false;
int size = 5 - mLast.size();
int size = Prefers.getColumn() - mLast.size();
if (size == 0) return false;
size = Math.min(size, items.size());
mLast.addAll(mLast.size(), new ArrayList<>(items.subList(0, size)));
@ -141,7 +142,7 @@ public class VodFragment extends BaseFragment implements CustomScroller.Callback
private void addVideo(List<Vod> items) {
if (checkLastSize(items)) return;
List<ListRow> rows = new ArrayList<>();
for (List<Vod> part : Lists.partition(items, 5)) {
for (List<Vod> part : Lists.partition(items, Prefers.getColumn())) {
mLast = new ArrayObjectAdapter(new VodPresenter(this));
mLast.setItems(part, null);
rows.add(new ListRow(mLast));

@ -12,13 +12,19 @@ import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.History;
import com.fongmi.android.tv.databinding.AdapterVodBinding;
import com.fongmi.android.tv.utils.ImgUtil;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
public class HistoryPresenter extends Presenter {
private OnClickListener mListener;
private int width, height;
private boolean delete;
public HistoryPresenter() {
setLayoutSize();
}
public interface OnClickListener {
void onItemClick(History item);
@ -40,9 +46,19 @@ public class HistoryPresenter extends Presenter {
this.delete = delete;
}
private void setLayoutSize() {
int space = ResUtil.dp2px(48) + ResUtil.dp2px(16 * (Prefers.getColumn() - 1));
int base = ResUtil.getScreenWidthPx() - space;
width = base / Prefers.getColumn();
height = (int) (width / 0.75f);
}
@Override
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) {
return new ViewHolder(AdapterVodBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
ViewHolder holder = new ViewHolder(AdapterVodBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
holder.binding.getRoot().getLayoutParams().width = width;
holder.binding.getRoot().getLayoutParams().height = height;
return holder;
}
@Override

@ -9,13 +9,17 @@ import androidx.leanback.widget.Presenter;
import com.fongmi.android.tv.bean.Vod;
import com.fongmi.android.tv.databinding.AdapterVodBinding;
import com.fongmi.android.tv.utils.ImgUtil;
import com.fongmi.android.tv.utils.Prefers;
import com.fongmi.android.tv.utils.ResUtil;
public class VodPresenter extends Presenter {
private final OnClickListener mListener;
private int width, height;
public VodPresenter(OnClickListener listener) {
this.mListener = listener;
setLayoutSize();
}
public interface OnClickListener {
@ -25,9 +29,19 @@ public class VodPresenter extends Presenter {
boolean onLongClick(Vod item);
}
private void setLayoutSize() {
int space = ResUtil.dp2px(48) + ResUtil.dp2px(16 * (Prefers.getColumn() - 1));
int base = ResUtil.getScreenWidthPx() - space;
width = base / Prefers.getColumn();
height = (int) (width / 0.75f);
}
@Override
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) {
return new ViewHolder(AdapterVodBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
ViewHolder holder = new ViewHolder(AdapterVodBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
holder.binding.getRoot().getLayoutParams().width = width;
holder.binding.getRoot().getLayoutParams().height = height;
return holder;
}
@Override

@ -2,8 +2,8 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="169.6dp"
android:layout_height="226.1dp"
android:layout_width="150dp"
android:layout_height="200dp"
android:focusable="true"
android:focusableInTouchMode="true">

@ -122,4 +122,8 @@ public class Prefers {
public static void putUpdate(boolean update) {
put("update", update);
}
public static int getColumn() {
return getInt("column", 6);
}
}

Loading…
Cancel
Save