Fix live layout

release
FongMi 2 years ago
parent a99f8d1002
commit 2e839d2b08
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  2. 7
      app/src/main/java/com/fongmi/android/tv/bean/Group.java
  3. 16
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  4. 11
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/ChannelAdapter.java
  5. 4
      app/src/mobile/res/drawable/ic_action_arrow.xml
  6. 11
      app/src/mobile/res/layout/activity_live.xml
  7. 12
      app/src/mobile/res/layout/adapter_channel.xml

@ -291,7 +291,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
int padding = ResUtil.dp2px(60);
if (group.isKeep()) group.setWidth(0);
if (group.getWidth() == 0) for (Channel item : group.getChannel()) group.setWidth(Math.max(group.getWidth(), (item.getLogo().isEmpty() ? 0 : logo) + ResUtil.getTextWidth(item.getNumber() + item.getName(), 16)));
mBinding.channel.getLayoutParams().width = group.getWidth() == 0 ? 0 : Math.min(group.getWidth() + padding, ResUtil.getScreenWidth() / 2);
mBinding.channel.getLayoutParams().width = group.getWidth() == 0 ? 0 : Math.min(group.getWidth() + padding, ResUtil.getScreenWidth() / 3);
return group;
}

@ -35,17 +35,13 @@ public class Group {
}
public static Group create() {
return create("");
return create(R.string.setting_live);
}
public static Group create(@StringRes int resId) {
return new Group(ResUtil.getString(resId));
}
public static Group create(String name) {
return new Group(name);
}
public static Group create(String name, boolean pass) {
return new Group(name, pass);
}
@ -58,6 +54,7 @@ public class Group {
this.name = name;
this.position = -1;
if (name.contains("_")) parse(pass);
if (name.isEmpty()) setName(ResUtil.getString(R.string.setting_live));
}
private void parse(boolean pass) {

@ -184,7 +184,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
@SuppressLint("ClickableViewAccessibility")
protected void initEvent() {
mBinding.control.seek.setListener(mPlayers);
mBinding.arrow.setOnClickListener(view -> onArrow());
mBinding.control.cast.setOnClickListener(view -> onCast());
mBinding.control.info.setOnClickListener(view -> onInfo());
mBinding.control.right.back.setOnClickListener(view -> onBack());
@ -319,7 +318,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
int padding = ResUtil.dp2px(60);
if (group.isKeep()) group.setWidth(0);
if (group.getWidth() == 0) for (Channel item : group.getChannel()) group.setWidth(Math.max(group.getWidth(), (item.getLogo().isEmpty() ? 0 : logo) + ResUtil.getTextWidth(item.getNumber() + item.getName(), 14)));
mBinding.channel.getLayoutParams().width = group.getWidth() == 0 ? 0 : Math.min(group.getWidth() + padding, ResUtil.getScreenWidth() / 2);
mBinding.channel.getLayoutParams().width = group.getWidth() == 0 ? 0 : Math.min(group.getWidth() + padding, ResUtil.getScreenWidth() / 3);
}
private void setWidth(Epg epg) {
@ -352,10 +351,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
mBinding.group.scrollToPosition(position);
}
private void onArrow() {
showEpg();
}
private void onCast() {
CastDialog.create().video(CastVideo.get(mBinding.control.title.getText().toString(), mPlayers.getUrl())).fm(false).show(this);
}
@ -491,8 +486,10 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
hideEpg();
}
private void showEpg() {
mBinding.widget.epgData.scrollToPosition(mChannel.getData().getSelected());
@Override
public void showEpg(Channel item) {
if (mChannel == null || mChannel.getData().getList().isEmpty() || mEpgDataAdapter.getItemCount() == 0 || !mChannel.equals(item)) return;
mBinding.widget.epgData.scrollToPosition(item.getData().getSelected());
mBinding.widget.epg.setVisibility(View.VISIBLE);
hideUI();
}
@ -666,7 +663,6 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
mViewModel.getEpg(mChannel);
mBinding.widget.play.setText("");
mChannel.loadLogo(mBinding.widget.logo);
mBinding.arrow.setVisibility(View.GONE);
mBinding.widget.name.setText(mChannel.getName());
mBinding.control.title.setText(mChannel.getName());
mBinding.widget.namePip.setText(mChannel.getName());
@ -683,8 +679,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
String epg = mChannel.getData().getEpg();
List<EpgData> data = mChannel.getData().getList();
if (epg.length() > 0) mBinding.widget.name.setMaxEms(12);
mBinding.arrow.setVisibility(data.isEmpty() ? View.GONE : View.VISIBLE);
mBinding.widget.play.setText(epg);
mChannelAdapter.changed(mChannel);
mEpgDataAdapter.addAll(data);
setWidth(mChannel.getData());
setMetadata();

@ -1,6 +1,7 @@
package com.fongmi.android.tv.ui.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
@ -24,6 +25,8 @@ public class ChannelAdapter extends RecyclerView.Adapter<ChannelAdapter.ViewHold
public interface OnClickListener {
void showEpg(Channel item);
void onItemClick(Channel item);
boolean onLongClick(Channel item);
@ -40,6 +43,12 @@ public class ChannelAdapter extends RecyclerView.Adapter<ChannelAdapter.ViewHold
notifyDataSetChanged();
}
public void changed(Channel item) {
int position = mItems.indexOf(item);
if (position == -1) return;
notifyItemChanged(position);
}
public void remove(Channel item) {
int position = mItems.indexOf(item);
if (position == -1) return;
@ -77,8 +86,10 @@ public class ChannelAdapter extends RecyclerView.Adapter<ChannelAdapter.ViewHold
holder.binding.name.setText(item.getName());
holder.binding.number.setText(item.getNumber());
holder.binding.getRoot().setSelected(item.isSelected());
holder.binding.epg.setOnClickListener(view -> mListener.showEpg(item));
holder.binding.getRoot().setOnClickListener(view -> mListener.onItemClick(item));
holder.binding.getRoot().setOnLongClickListener(view -> mListener.onLongClick(item));
holder.binding.epg.setVisibility(item.getData().getList().isEmpty() || !item.isSelected() ? View.GONE : View.VISIBLE);
}
static class ViewHolder extends RecyclerView.ViewHolder {

@ -1,6 +1,6 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:width="24dp"
android:height="24dp"
android:autoMirrored="true"
android:tint="#FFFFFF"
android:viewportWidth="24"

@ -90,17 +90,6 @@
tools:itemCount="5"
tools:listitem="@layout/adapter_channel" />
<ImageView
android:id="@+id/arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="-32dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="4dp"
android:src="@drawable/ic_action_arrow"
android:visibility="visible" />
</LinearLayout>
</FrameLayout>

@ -33,8 +33,9 @@
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:duplicateParentState="true"
android:ellipsize="marquee"
android:singleLine="true"
@ -42,4 +43,13 @@
android:textSize="14sp"
tools:text="CNN" />
<ImageView
android:id="@+id/epg"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="4dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:padding="4dp"
android:src="@drawable/ic_action_arrow" />
</LinearLayout>
Loading…
Cancel
Save