pull/102/head
FongMi 3 years ago
parent 9a833ee038
commit 1d78770071
  1. 16
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 12
      app/src/leanback/java/com/fongmi/android/tv/ui/presenter/HeaderPresenter.java
  3. 53
      app/src/leanback/res/layout/activity_home.xml
  4. 2
      app/src/leanback/res/layout/adapter_header.xml

@ -33,7 +33,7 @@ import com.fongmi.android.tv.ui.custom.CustomSelector;
import com.fongmi.android.tv.ui.presenter.FuncPresenter;
import com.fongmi.android.tv.ui.presenter.HistoryPresenter;
import com.fongmi.android.tv.ui.presenter.ProgressPresenter;
import com.fongmi.android.tv.ui.presenter.TitlePresenter;
import com.fongmi.android.tv.ui.presenter.HeaderPresenter;
import com.fongmi.android.tv.ui.presenter.VodPresenter;
import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.Notify;
@ -45,7 +45,6 @@ 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 HomeActivity extends BaseActivity implements VodPresenter.OnClickListener, FuncPresenter.OnClickListener, HistoryPresenter.OnClickListener {
@ -89,14 +88,14 @@ public class HomeActivity extends BaseActivity implements VodPresenter.OnClickLi
mBinding.recycler.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() {
@Override
public void onChildViewHolderSelected(@NonNull RecyclerView parent, @Nullable RecyclerView.ViewHolder child, int position, int subposition) {
mBinding.time.setVisibility(position == 1 ? View.VISIBLE : View.GONE);
mBinding.toolbar.setVisibility(position == 0 ? View.VISIBLE : View.GONE);
}
});
}
private void setRecyclerView() {
CustomSelector selector = new CustomSelector();
selector.addPresenter(Integer.class, new TitlePresenter());
selector.addPresenter(Integer.class, new HeaderPresenter());
selector.addPresenter(String.class, new ProgressPresenter());
selector.addPresenter(ListRow.class, new CustomRowPresenter(16), VodPresenter.class);
selector.addPresenter(ListRow.class, new CustomRowPresenter(16), FuncPresenter.class);
@ -115,7 +114,6 @@ public class HomeActivity extends BaseActivity implements VodPresenter.OnClickLi
}
private void setAdapter() {
mAdapter.add(R.string.app_name);
mAdapter.add(getFuncRow());
mAdapter.add(R.string.home_history);
mAdapter.add(R.string.home_recommend);
@ -129,13 +127,11 @@ public class HomeActivity extends BaseActivity implements VodPresenter.OnClickLi
}
private void addVideo(Result result) {
List<ListRow> rows = new ArrayList<>();
for (List<Vod> items : Lists.partition(result.getList(), 5)) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(this));
adapter.setItems(items, null);
rows.add(new ListRow(adapter));
mAdapter.add(new ListRow(adapter));
}
mAdapter.addAll(mAdapter.size(), rows);
}
private ListRow getFuncRow() {
@ -241,8 +237,8 @@ public class HomeActivity extends BaseActivity implements VodPresenter.OnClickLi
if (mHistoryPresenter.isDelete()) {
mHistoryPresenter.setDelete(false);
mHistoryAdapter.notifyArrayItemRangeChanged(0, mHistoryAdapter.size());
} else if (mBinding.recycler.getSelectedPosition() != 1) {
mBinding.recycler.smoothScrollToPosition(1);
} else if (mBinding.recycler.getSelectedPosition() != 0) {
mBinding.recycler.smoothScrollToPosition(0);
} else if (!mConfirmExit) {
mConfirmExit = true;
Notify.show(R.string.app_exit);

@ -6,19 +6,19 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.leanback.widget.Presenter;
import com.fongmi.android.tv.databinding.AdapterTitleBinding;
import com.fongmi.android.tv.databinding.AdapterHeaderBinding;
import com.fongmi.android.tv.utils.ResUtil;
public class TitlePresenter extends Presenter {
public class HeaderPresenter extends Presenter {
@Override
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) {
return new TitlePresenter.ViewHolder(AdapterTitleBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
return new HeaderPresenter.ViewHolder(AdapterHeaderBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
}
@Override
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object object) {
TitlePresenter.ViewHolder holder = (TitlePresenter.ViewHolder) viewHolder;
HeaderPresenter.ViewHolder holder = (HeaderPresenter.ViewHolder) viewHolder;
holder.binding.text.setText(object instanceof String ? object.toString() : ResUtil.getString((int) object));
}
@ -28,9 +28,9 @@ public class TitlePresenter extends Presenter {
public static class ViewHolder extends Presenter.ViewHolder {
private final AdapterTitleBinding binding;
private final AdapterHeaderBinding binding;
public ViewHolder(@NonNull AdapterTitleBinding binding) {
public ViewHolder(@NonNull AdapterHeaderBinding binding) {
super(binding.getRoot());
this.binding = binding;
}

@ -1,9 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
android:keepScreenOn="true"
android:orientation="vertical">
<FrameLayout
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="24dp"
android:paddingTop="24dp"
android:paddingEnd="24dp"
android:paddingBottom="8dp">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:text="@string/app_name"
android:textColor="@color/white"
android:textSize="24sp" />
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:letterSpacing="0.02"
android:textColor="@color/white"
android:textSize="24sp"
tools:text="07/25 09:20:00" />
</FrameLayout>
<androidx.leanback.widget.VerticalGridView
android:id="@+id/recycler"
@ -11,17 +42,9 @@
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:padding="24dp" />
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"
android:layout_margin="24dp"
android:letterSpacing="0.02"
android:textColor="@color/white"
android:textSize="24sp"
tools:text="07/25 09:20:00" />
android:paddingStart="24dp"
android:paddingTop="8dp"
android:paddingEnd="24dp"
android:paddingBottom="24dp" />
</FrameLayout>
</LinearLayout>

@ -6,4 +6,4 @@
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="24sp"
tools:text="@string/app_name" />
tools:text="@string/home_recommend" />
Loading…
Cancel
Save