Optimize ui hide

pull/123/head
FongMi 4 years ago
parent 18e0c99aff
commit 133007ed7f
  1. 33
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  2. 56
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomLiveGridView.java
  3. 4
      app/src/leanback/res/layout/activity_live.xml
  4. 22
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomScrollerLive.java

@ -25,7 +25,7 @@ import com.fongmi.android.tv.model.LiveViewModel;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.player.source.Force;
import com.fongmi.android.tv.ui.custom.CustomKeyDownLive;
import com.fongmi.android.tv.ui.custom.CustomScrollerLive;
import com.fongmi.android.tv.ui.custom.CustomLiveGridView;
import com.fongmi.android.tv.ui.presenter.ChannelPresenter;
import com.fongmi.android.tv.ui.presenter.GroupPresenter;
import com.fongmi.android.tv.utils.Clock;
@ -37,7 +37,10 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class LiveActivity extends BaseActivity implements GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, CustomKeyDownLive.Listener {
import java.util.ArrayList;
import java.util.List;
public class LiveActivity extends BaseActivity implements GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveGridView.Callback {
private ActivityLiveBinding mBinding;
private ArrayObjectAdapter mChannelAdapter;
@ -91,10 +94,10 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
protected void initEvent() {
mBinding.group.setListener(this);
mBinding.channel.setListener(this);
EventBus.getDefault().register(this);
getPlayerView().setOnClickListener(view -> toggle());
mBinding.group.addOnScrollListener(new CustomScrollerLive(this::setUITimer));
mBinding.channel.addOnScrollListener(new CustomScrollerLive(this::setUITimer));
mBinding.group.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() {
@Override
public void onChildViewHolderSelected(@NonNull RecyclerView parent, @Nullable RecyclerView.ViewHolder child, int position, int subposition) {
@ -122,7 +125,9 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
}
private void getLive() {
mGroupAdapter.setItems(LiveConfig.get().getHome().getGroups(), null);
List<Group> items = new ArrayList<>();
items.addAll(LiveConfig.get().getHome().getGroups());
mGroupAdapter.setItems(items, null);
mBinding.group.setVisibility(mGroupAdapter.size() == 1 ? View.GONE : View.VISIBLE);
setPosition(LiveConfig.get().getKeep());
}
@ -146,7 +151,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mOldView = child.itemView;
mOldView.setSelected(true);
onItemClick(group);
setUITimer();
}
private void setChannelActivated() {
@ -162,7 +166,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
}
private void hideUI() {
mHandler.removeCallbacks(mR0);
if (isGone(mBinding.recycler)) return;
mBinding.recycler.setVisibility(View.GONE);
setPosition();
@ -173,12 +176,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.recycler.setVisibility(View.VISIBLE);
mBinding.channel.requestFocus();
setPosition();
setUITimer();
}
private void setUITimer() {
mHandler.removeCallbacks(mR0);
mHandler.postDelayed(mR0, 5000);
}
private void hideInfo() {
@ -242,7 +239,13 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (isGone(mBinding.recycler) && mKeyDown.hasEvent(event)) return mKeyDown.onKeyDown(event);
else return super.dispatchKeyEvent(event);
return super.dispatchKeyEvent(event);
}
@Override
public void setUITimer() {
mHandler.removeCallbacks(mR0);
mHandler.postDelayed(mR0, 5000);
}
@Override
@ -363,8 +366,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
super.onDestroy();
mPlayers.release();
Force.get().stop();
mGroup.setSelected(false);
mChannel.setSelected(false);
EventBus.getDefault().unregister(this);
}
}

@ -0,0 +1,56 @@
package com.fongmi.android.tv.ui.custom;
import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.leanback.widget.VerticalGridView;
import com.fongmi.android.tv.utils.Utils;
public class CustomLiveGridView extends VerticalGridView {
private Callback listener;
public CustomLiveGridView(@NonNull Context context) {
super(context);
}
public CustomLiveGridView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public CustomLiveGridView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setListener(Callback listener) {
this.listener = listener;
}
private void moveTop() {
if (getSelectedPosition() == getAdapter().getItemCount() - 1) setSelectedPosition(0);
listener.setUITimer();
}
private void moveBottom() {
if (getSelectedPosition() == 0) setSelectedPosition(getAdapter().getItemCount());
listener.setUITimer();
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (getVisibility() == View.GONE || event.getAction() != KeyEvent.ACTION_DOWN) return super.dispatchKeyEvent(event);
if (Utils.isUpKey(event)) moveBottom();
else if (Utils.isDownKey(event)) moveTop();
return super.dispatchKeyEvent(event);
}
public interface Callback {
void setUITimer();
}
}

@ -59,7 +59,7 @@
android:orientation="horizontal"
android:visibility="gone">
<androidx.leanback.widget.VerticalGridView
<com.fongmi.android.tv.ui.custom.CustomLiveGridView
android:id="@+id/group"
android:layout_width="140dp"
android:layout_height="match_parent"
@ -71,7 +71,7 @@
android:layout_height="match_parent"
android:background="@color/grey_700" />
<androidx.leanback.widget.VerticalGridView
<com.fongmi.android.tv.ui.custom.CustomLiveGridView
android:id="@+id/channel"
android:layout_width="260dp"
android:layout_height="match_parent"

@ -1,22 +0,0 @@
package com.fongmi.android.tv.ui.custom;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class CustomScrollerLive extends RecyclerView.OnScrollListener {
private final Callback callback;
public CustomScrollerLive(Callback callback) {
this.callback = callback;
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
callback.onScrolled();
}
public interface Callback {
void onScrolled();
}
}
Loading…
Cancel
Save