Optimize ux

fongmi
jhengazuki 1 month ago
parent e32275fe0e
commit 526b3daf25
  1. 30
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java
  2. 6
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 9
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  4. 4
      app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java
  5. 1
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  6. 1
      app/src/main/java/com/fongmi/android/tv/api/config/WallConfig.java
  7. 3
      app/src/main/java/com/fongmi/android/tv/impl/Callback.java
  8. 6
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  9. 9
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java
  10. 27
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/VodFragment.java

@ -3,6 +3,7 @@ package com.fongmi.android.tv.ui.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
@ -69,7 +70,9 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
public class HomeActivity extends BaseActivity implements CustomTitleView.Listener, VodPresenter.OnClickListener, FuncPresenter.OnClickListener, HistoryPresenter.OnClickListener {
@ -83,10 +86,14 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
private Result mResult;
private Clock mClock;
private Site getHome() {
private Site getSite() {
return VodConfig.get().getHome();
}
private Config getConfig() {
return VodConfig.get().getConfig();
}
@Override
protected ViewBinding getBinding() {
return mBinding = ActivityHomeBinding.inflate(getLayoutInflater());
@ -106,6 +113,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
@Override
protected void initView() {
mResult = Result.empty();
mClock = Clock.create(mBinding.clock);
mBinding.progressLayout.showProgress();
Updater.create().start(this);
@ -114,6 +122,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
setViewModel();
setAdapter();
initConfig();
setTitle();
setLogo();
}
@ -168,6 +177,12 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
mAdapter.add(R.string.home_recommend);
}
private void setTitle() {
List<String> items = Arrays.asList(getSite().getName(), getConfig().getName(), getString(R.string.app_name));
Optional<String> optional = items.stream().filter(s -> !TextUtils.isEmpty(s)).findFirst();
optional.ifPresent(s -> mBinding.title.setText(s));
}
private void initConfig() {
if (isLoading()) return;
WallConfig.get().init();
@ -222,18 +237,17 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
}
private void getVideo() {
setTitle();
mResult = Result.empty();
int index = getRecommendIndex();
String title = getHome().getName();
mBinding.title.setText(title.isEmpty() ? getString(R.string.app_name) : title);
if (mAdapter.size() > index) mAdapter.removeItems(index, mAdapter.size() - index);
if (getHome().getKey().isEmpty()) return;
if (getSite().getKey().isEmpty()) return;
mViewModel.homeContent();
mAdapter.add("progress");
}
private void addVideo(Result result) {
Style style = result.getStyle(getHome().getStyle());
Style style = result.getStyle(getSite().getStyle());
for (List<Vod> items : Lists.partition(result.getList(), Product.getColumn(style))) {
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VodPresenter(this, style));
adapter.setItems(items, new BaseDiffCallback<Vod>());
@ -387,9 +401,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen
@Override
public void onItemClick(Vod item) {
if (item.isAction()) mViewModel.action(getHome().getKey(), item.getAction());
else if (getHome().isIndex()) CollectActivity.start(this, item.getVodName());
else VideoActivity.start(this, getHome().getKey(), item.getVodId(), item.getVodName(), item.getVodPic());
if (item.isAction()) mViewModel.action(getSite().getKey(), item.getAction());
else if (getSite().isIndex()) CollectActivity.start(this, item.getVodName());
else VideoActivity.start(this, getSite().getKey(), item.getVodId(), item.getVodName(), item.getVodPic());
}
@Override

@ -690,11 +690,15 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
public void setConfig(Config config) {
Config current = LiveConfig.get().getConfig();
LiveConfig.load(config, getCallback(current));
showProgress();
}
private Callback getCallback(Config config) {
return new Callback() {
@Override
public void start() {
showProgress();
}
@Override
public void success() {
RefreshEvent.config();

@ -133,7 +133,6 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
if (config.getUrl().startsWith("file")) {
PermissionUtil.requestFile(this, allGranted -> load(config));
} else {
Notify.progress(this);
load(config);
}
}
@ -155,6 +154,11 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
private Callback getCallback(int type) {
return new Callback() {
@Override
public void start() {
Notify.progress(getActivity());
}
@Override
public void success(String result) {
Notify.show(result);
@ -251,7 +255,6 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
private void setWallRefresh(View view) {
Setting.putWall(0);
Notify.progress(this);
WallConfig.get().load(getCallback(2));
}
@ -278,7 +281,6 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
@Override
public void setDoh(Doh doh) {
Notify.progress(this);
OkHttp.get().setDoh(doh);
Setting.putDoh(doh.toString());
mBinding.dohText.setText(doh.getName());
@ -313,7 +315,6 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
@Override
public void success() {
Notify.show(R.string.restore_success);
Notify.progress(getActivity());
setOtherText();
initConfig();
}

@ -30,7 +30,6 @@ import com.google.gson.JsonObject;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Future;
@ -115,6 +114,7 @@ public class LiveConfig {
public void load(Callback callback) {
if (future != null && !future.isDone()) future.cancel(true);
future = App.submit(() -> loadConfig(callback));
callback.start();
}
private void loadConfig(Callback callback) {
@ -131,8 +131,8 @@ public class LiveConfig {
private void parseText(String text, Callback callback) {
Live live = new Live(parseName(config.getUrl()), config.getUrl()).sync();
lives = new ArrayList<>(List.of(live));
LiveParser.text(live, text);
lives = Arrays.asList(live);
setHome(live, true);
App.post(callback::success);
}

@ -112,6 +112,7 @@ public class VodConfig {
public void load(Callback callback) {
if (future != null && !future.isDone()) future.cancel(true);
future = App.submit(() -> loadConfig(callback));
callback.start();
}
private void loadConfig(Callback callback) {

@ -78,6 +78,7 @@ public class WallConfig {
public void load(Callback callback) {
if (future != null && !future.isDone()) future.cancel(true);
future = App.submit(() -> loadConfig(callback));
callback.start();
}
private void loadConfig(Callback callback) {

@ -18,6 +18,9 @@ public class Callback implements okhttp3.Callback {
public void error() {
}
public void start() {
}
public void error(String msg) {
}

@ -724,11 +724,15 @@ public class LiveActivity extends BaseActivity implements CustomKeyDown.Listener
public void setConfig(Config config) {
Config current = LiveConfig.get().getConfig();
LiveConfig.load(config, getCallback(current));
showProgress();
}
private Callback getCallback(Config config) {
return new Callback() {
@Override
public void start() {
showProgress();
}
@Override
public void success() {
RefreshEvent.config();

@ -142,7 +142,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit
if (config.getUrl().startsWith("file")) {
PermissionUtil.requestFile(this, allGranted -> load(config));
} else {
Notify.progress(requireActivity());
load(config);
}
}
@ -164,6 +163,11 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit
private Callback getCallback(int type) {
return new Callback() {
@Override
public void start() {
Notify.progress(requireActivity());
}
@Override
public void success(String result) {
Notify.show(result);
@ -258,7 +262,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit
private void setWallRefresh(View view) {
Setting.putWall(0);
Notify.progress(requireActivity());
WallConfig.get().load(getCallback(2));
}
@ -290,7 +293,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit
private void setDoh(Doh doh) {
OkHttp.get().setDoh(doh);
Notify.progress(requireActivity());
Setting.putDoh(doh.toString());
mBinding.dohText.setText(doh.getName());
VodConfig.load(Config.vod(), getCallback(0));
@ -324,7 +326,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit
@Override
public void success() {
Notify.show(R.string.restore_success);
Notify.progress(requireActivity());
setOtherText();
initConfig();
}

@ -2,6 +2,7 @@ package com.fongmi.android.tv.ui.fragment;
import android.app.Activity;
import android.content.Intent;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
@ -55,7 +56,9 @@ import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
public class VodFragment extends BaseFragment implements ConfigCallback, SiteCallback, FilterCallback, TypeAdapter.OnClickListener {
@ -76,6 +79,10 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal
return VodConfig.get().getHome();
}
private Config getConfig() {
return VodConfig.get().getConfig();
}
@Override
protected ViewBinding getBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container) {
return mBinding = FragmentVodBinding.inflate(inflater, container, false);
@ -88,6 +95,7 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal
setRecyclerView();
setViewModel();
showProgress();
setTitle();
setLogo();
}
@ -159,6 +167,12 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal
}
}
private void setTitle() {
List<String> items = Arrays.asList(getSite().getName(), getConfig().getName(), getString(R.string.app_name));
Optional<String> optional = items.stream().filter(s -> !TextUtils.isEmpty(s)).findFirst();
optional.ifPresent(s -> mBinding.title.setText(s));
}
private void onTop(View view) {
getFragment().scrollToTop();
mBinding.top.setVisibility(View.INVISIBLE);
@ -209,13 +223,12 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal
}
private void homeContent() {
setTitle();
showProgress();
setFabVisible(0);
mAdapter.clear();
mViewModel.homeContent();
String title = getSite().getName();
mBinding.pager.setAdapter(new PageAdapter(getChildFragmentManager()));
mBinding.title.setText(title.isEmpty() ? getString(R.string.app_name) : title);
}
public Result getResult() {
@ -258,9 +271,15 @@ public class VodFragment extends BaseFragment implements ConfigCallback, SiteCal
@Override
public void setConfig(Config config) {
hideContent();
showProgress();
VodConfig.load(config, new Callback() {
@Override
public void start() {
showProgress();
hideContent();
setTitle();
setLogo();
}
@Override
public void success() {
RefreshEvent.config();

Loading…
Cancel
Save