Dynamic live layout width

pull/171/head
FongMi 2 years ago
parent 43f56744da
commit a508921ccc
  1. 13
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  2. 1
      app/src/leanback/res/layout/adapter_group.xml
  3. 17
      app/src/main/java/com/fongmi/android/tv/bean/Live.java
  4. 12
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  5. 5
      app/src/mobile/res/layout/activity_live.xml
  6. 1
      app/src/mobile/res/layout/adapter_channel.xml
  7. 2
      app/src/mobile/res/layout/adapter_group.xml

@ -231,6 +231,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mViewModel.live.observe(this, live -> {
hideProgress();
setGroup(live);
setWidth(live);
});
}
@ -242,14 +243,18 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
showProgress();
}
private void setGroup(Live home) {
private void setGroup(Live live) {
List<Group> items = new ArrayList<>();
items.add(Group.create(R.string.keep));
for (Group group : home.getGroups()) (group.isHidden() ? mHides : items).add(group);
for (Group group : live.getGroups()) (group.isHidden() ? mHides : items).add(group);
mGroupAdapter.setItems(items, null);
setPosition(LiveConfig.get().find(items));
mBinding.control.home.setText(home.getName());
mBinding.group.getLayoutParams().width = home.getWidth();
mBinding.control.home.setText(live.getName());
}
private void setWidth(Live live) {
for (Group group : live.getGroups()) live.setWidth(Math.max(live.getWidth(), ResUtil.getTextWidth(group.getName(), 16)));
mBinding.group.getLayoutParams().width = live.getWidth() + ResUtil.dp2px(live.hasLogo() ? 98 : 50);
}
private void setPosition(int[] position) {

@ -24,7 +24,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:ellipsize="marquee"
android:singleLine="true"
android:textColor="@color/group"
android:textSize="16sp"

@ -5,7 +5,6 @@ import android.text.TextUtils;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Constant;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.gson.JsonElement;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;
@ -52,6 +51,7 @@ public class Live {
private Core core;
private boolean activated;
private int width;
public static Live objectFrom(JsonElement element) {
return App.gson().fromJson(element, Live.class);
@ -152,6 +152,14 @@ public class Live {
this.activated = item.equals(this);
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public Live check() {
boolean proxy = getChannels().size() > 0 && getChannels().get(0).getUrls().size() > 0 && getChannels().get(0).getUrls().get(0).startsWith("proxy");
if (proxy) setProxy();
@ -175,13 +183,6 @@ public class Live {
return false;
}
public int getWidth() {
int width = 0;
for (Group group : getGroups()) width = Math.max(width, ResUtil.getTextWidth(group.getName(), 16) + ResUtil.dp2px(60));
if (hasLogo()) width += ResUtil.dp2px(48);
return width;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;

@ -250,6 +250,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
mViewModel.live.observe(this, live -> {
hideProgress();
setGroup(live);
setWidth(live);
});
}
@ -261,13 +262,18 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
showProgress();
}
private void setGroup(Live home) {
private void setGroup(Live live) {
List<Group> items = new ArrayList<>();
items.add(Group.create(R.string.keep));
for (Group group : home.getGroups()) (group.isHidden() ? mHides : items).add(group);
for (Group group : live.getGroups()) (group.isHidden() ? mHides : items).add(group);
mGroupAdapter.addAll(items);
setPosition(LiveConfig.get().find(items));
mBinding.control.action.home.setText(home.getName());
mBinding.control.action.home.setText(live.getName());
}
private void setWidth(Live live) {
for (Group group : live.getGroups()) live.setWidth(Math.max(live.getWidth(), ResUtil.getTextWidth(group.getName(), 14)));
mBinding.group.getLayoutParams().width = live.getWidth() + ResUtil.dp2px(live.hasLogo() ? 90 : 45);
}
private void setPosition(int[] position) {

@ -62,7 +62,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/group"
android:layout_width="wrap_content"
android:layout_width="140dp"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
@ -78,11 +78,10 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/channel"
android:layout_width="wrap_content"
android:layout_width="260dp"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:minWidth="260dp"
android:padding="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="5"

@ -37,7 +37,6 @@
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:ellipsize="marquee"
android:maxEms="10"
android:singleLine="true"
android:textColor="@color/channel"
android:textSize="14sp"

@ -26,8 +26,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:ellipsize="marquee"
android:maxEms="10"
android:singleLine="true"
android:textColor="@color/group"
android:textSize="14sp"

Loading…
Cancel
Save