diff --git a/app/src/main/java/com/github/tvbox/osc/bean/MovieSort.java b/app/src/main/java/com/github/tvbox/osc/bean/MovieSort.java index e935bdc6..3711f858 100644 --- a/app/src/main/java/com/github/tvbox/osc/bean/MovieSort.java +++ b/app/src/main/java/com/github/tvbox/osc/bean/MovieSort.java @@ -42,6 +42,15 @@ public class MovieSort implements Serializable { this.name = name; } + public int filterSelectCount() { + int count = 0; + for (String filter : filterSelect.values()) { + if (!filter.isEmpty()) { + count++; + } + } + return count; + } @Override public int compareTo(SortData o) { diff --git a/app/src/main/java/com/github/tvbox/osc/event/RefreshEvent.java b/app/src/main/java/com/github/tvbox/osc/event/RefreshEvent.java index fc07783b..70d873a1 100644 --- a/app/src/main/java/com/github/tvbox/osc/event/RefreshEvent.java +++ b/app/src/main/java/com/github/tvbox/osc/event/RefreshEvent.java @@ -19,6 +19,7 @@ public class RefreshEvent { public static final int TYPE_EPG_URL_CHANGE = 10; public static final int TYPE_SETTING_SEARCH_TV = 11; public static final int TYPE_SUBTITLE_SIZE_CHANGE = 12; + public static final int TYPE_FILTER_CHANGE = 13; public int type; public Object obj; diff --git a/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java b/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java index e1607d93..96a2045c 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/activity/HomeActivity.java @@ -79,6 +79,7 @@ public class HomeActivity extends BaseActivity { private SourceViewModel sourceViewModel; private SortAdapter sortAdapter; private HomePageAdapter pageAdapter; + private View currentView; private List fragments = new ArrayList<>(); private boolean isDownOrUp = false; private boolean sortChange = false; @@ -147,6 +148,7 @@ public class HomeActivity extends BaseActivity { view.animate().scaleX(1.0f).scaleY(1.0f).setDuration(300).start(); textView.setTextColor(HomeActivity.this.getResources().getColor(R.color.color_BBFFFFFF)); view.findViewById(R.id.tvFilter).setVisibility(View.GONE); + view.findViewById(R.id.tvFilterColor).setVisibility(View.GONE); } textView.invalidate(); } @@ -159,6 +161,7 @@ public class HomeActivity extends BaseActivity { public void onItemSelected(TvRecyclerView tvRecyclerView, View view, int position) { if (view != null) { + HomeActivity.this.currentView = view; HomeActivity.this.isDownOrUp = false; HomeActivity.this.sortChange = true; view.animate().scaleX(1.1f).scaleY(1.1f).setInterpolator(new BounceInterpolator()).setDuration(300).start(); @@ -166,8 +169,10 @@ public class HomeActivity extends BaseActivity { textView.getPaint().setFakeBoldText(true); textView.setTextColor(HomeActivity.this.getResources().getColor(R.color.color_FFFFFF)); textView.invalidate(); - if (!sortAdapter.getItem(position).filters.isEmpty()) - view.findViewById(R.id.tvFilter).setVisibility(View.VISIBLE); + MovieSort.SortData sortData = sortAdapter.getItem(position); + if (!sortData.filters.isEmpty()) { + showFilterIcon(sortData.filterSelectCount()); + } HomeActivity.this.sortFocusView = view; HomeActivity.this.sortFocused = position; mHandler.removeCallbacks(mDataRunnable); @@ -479,9 +484,19 @@ public class HomeActivity extends BaseActivity { newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); HomeActivity.this.startActivity(newIntent); } + } else if (event.type == RefreshEvent.TYPE_FILTER_CHANGE) { + if (currentView != null) { + showFilterIcon((int) event.obj); + } } } + private void showFilterIcon(int count) { + boolean visible = count > 0; + currentView.findViewById(R.id.tvFilterColor).setVisibility(visible ? View.VISIBLE : View.GONE); + currentView.findViewById(R.id.tvFilter).setVisibility(visible ? View.GONE : View.VISIBLE); + } + private Runnable mDataRunnable = new Runnable() { @Override public void run() { diff --git a/app/src/main/java/com/github/tvbox/osc/ui/fragment/GridFragment.java b/app/src/main/java/com/github/tvbox/osc/ui/fragment/GridFragment.java index 47a4b2d5..59d1e247 100644 --- a/app/src/main/java/com/github/tvbox/osc/ui/fragment/GridFragment.java +++ b/app/src/main/java/com/github/tvbox/osc/ui/fragment/GridFragment.java @@ -15,6 +15,7 @@ import com.github.tvbox.osc.bean.AbsXml; import com.github.tvbox.osc.bean.Movie; import com.github.tvbox.osc.bean.MovieSort; import com.github.tvbox.osc.bean.SourceBean; +import com.github.tvbox.osc.event.RefreshEvent; import com.github.tvbox.osc.ui.activity.DetailActivity; import com.github.tvbox.osc.ui.activity.FastSearchActivity; import com.github.tvbox.osc.ui.activity.SearchActivity; @@ -32,6 +33,8 @@ import java.util.Stack; import android.view.ViewGroup; import android.widget.Toast; +import org.greenrobot.eventbus.EventBus; + /** * @author pj567 * @date :2020/12/21 @@ -287,9 +290,15 @@ public class GridFragment extends BaseLazyFragment { showLoading(); isLoad = false; scrollTop(); + toggleFilterColor(); sourceViewModel.getList(sortData, page); } + private void toggleFilterColor() { + int count = sortData.filterSelectCount(); + EventBus.getDefault().post(new RefreshEvent(RefreshEvent.TYPE_FILTER_CHANGE, count)); + } + public boolean isTop() { return isTop; } diff --git a/app/src/main/res/drawable/icon_filter_color.xml b/app/src/main/res/drawable/icon_filter_color.xml new file mode 100644 index 00000000..d222f7fc --- /dev/null +++ b/app/src/main/res/drawable/icon_filter_color.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/item_home_sort.xml b/app/src/main/res/layout/item_home_sort.xml index 6cf8e84f..caaf57e3 100644 --- a/app/src/main/res/layout/item_home_sort.xml +++ b/app/src/main/res/layout/item_home_sort.xml @@ -29,4 +29,15 @@ android:layout_marginLeft="@dimen/vs_3" android:src="@drawable/icon_filter" android:visibility="gone" /> + + + \ No newline at end of file