[mobile] support folder view type

pull/123/head
FongMi 3 years ago
parent 3571b68ee7
commit a3ccda9cdf
  1. 2
      app/src/main/java/com/fongmi/android/tv/bean/Vod.java
  2. 14
      app/src/main/java/com/fongmi/android/tv/utils/ImgUtil.java
  3. 12
      app/src/mobile/java/com/fongmi/android/tv/ui/adapter/VodAdapter.java
  4. 1
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/ViewType.java
  5. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/child/TypeFragment.java
  6. 9
      app/src/mobile/res/drawable/ic_view_grid.xml
  7. 8
      app/src/mobile/res/drawable/ic_view_list.xml
  8. 3
      app/src/mobile/res/layout/adapter_vod_grid.xml
  9. 1
      app/src/mobile/res/layout/adapter_vod_list.xml

@ -104,7 +104,7 @@ public class Vod {
}
public String getVodRemarks() {
return TextUtils.isEmpty(vodRemarks) ? "" : vodRemarks;
return TextUtils.isEmpty(vodRemarks) ? "" : vodRemarks.trim();
}
public String getVodYear() {

@ -25,9 +25,13 @@ import java.io.ByteArrayOutputStream;
public class ImgUtil {
public static void load(String url, ImageView view) {
view.setScaleType(ImageView.ScaleType.CENTER);
load(url, view, ImageView.ScaleType.CENTER);
}
public static void load(String url, ImageView view, ImageView.ScaleType scaleType) {
view.setScaleType(scaleType);
if (TextUtils.isEmpty(url)) view.setImageResource(R.drawable.ic_img_error);
else Glide.with(App.get()).asBitmap().load(getUrl(Utils.checkProxy(url))).skipMemoryCache(true).dontAnimate().sizeMultiplier(Prefers.getThumbnail()).signature(new ObjectKey(url + "_" + Prefers.getQuality())).placeholder(R.drawable.ic_img_loading).listener(getListener(view)).into(view);
else Glide.with(App.get()).asBitmap().load(getUrl(Utils.checkProxy(url))).skipMemoryCache(true).dontAnimate().sizeMultiplier(Prefers.getThumbnail()).signature(new ObjectKey(url + "_" + Prefers.getQuality())).placeholder(R.drawable.ic_img_loading).listener(getListener(view, scaleType)).into(view);
}
public static void loadKeep(String url, ImageView view) {
@ -56,10 +60,14 @@ public class ImgUtil {
}
private static RequestListener<Bitmap> getListener(ImageView view) {
return getListener(view, ImageView.ScaleType.CENTER);
}
private static RequestListener<Bitmap> getListener(ImageView view, ImageView.ScaleType scaleType) {
return new RequestListener<>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
view.setScaleType(ImageView.ScaleType.CENTER);
view.setScaleType(scaleType);
view.setImageResource(R.drawable.ic_img_error);
return true;
}

@ -7,9 +7,11 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.fongmi.android.tv.bean.Vod;
import com.fongmi.android.tv.databinding.AdapterVodFolderBinding;
import com.fongmi.android.tv.databinding.AdapterVodGridBinding;
import com.fongmi.android.tv.databinding.AdapterVodListBinding;
import com.fongmi.android.tv.ui.custom.ViewType;
import com.fongmi.android.tv.ui.holder.VodFolderHolder;
import com.fongmi.android.tv.ui.holder.VodGridHolder;
import com.fongmi.android.tv.ui.holder.VodListHolder;
@ -78,6 +80,7 @@ public class VodAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == ViewType.FOLDER) return new VodFolderHolder(AdapterVodFolderBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false), mListener);
if (viewType == ViewType.LIST) return new VodListHolder(AdapterVodListBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false), mListener);
VodGridHolder holder = new VodGridHolder(AdapterVodGridBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false), mListener);
holder.itemView.getLayoutParams().width = width;
@ -89,12 +92,13 @@ public class VodAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
switch (viewType) {
case ViewType.GRID:
VodGridHolder gridHolder = (VodGridHolder) holder;
gridHolder.initView(mItems.get(position));
((VodGridHolder) holder).initView(mItems.get(position));
break;
case ViewType.LIST:
VodListHolder listHolder = (VodListHolder) holder;
listHolder.initView(mItems.get(position));
((VodListHolder) holder).initView(mItems.get(position));
break;
case ViewType.FOLDER:
((VodFolderHolder) holder).initView(mItems.get(position));
break;
}
}

@ -4,4 +4,5 @@ public class ViewType {
public static final int GRID = 0;
public static final int LIST = 1;
public static final int FOLDER = 2;
}

@ -8,6 +8,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.Product;
@ -21,6 +22,7 @@ import com.fongmi.android.tv.ui.activity.DetailActivity;
import com.fongmi.android.tv.ui.adapter.VodAdapter;
import com.fongmi.android.tv.ui.base.BaseFragment;
import com.fongmi.android.tv.ui.custom.CustomScroller;
import com.fongmi.android.tv.ui.custom.ViewType;
import java.util.ArrayList;
import java.util.HashMap;
@ -81,7 +83,8 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
private void setRecyclerView() {
mBinding.recycler.setHasFixedSize(true);
mBinding.recycler.setAdapter(mAdapter = new VodAdapter(this));
mBinding.recycler.setLayoutManager(new GridLayoutManager(getContext(), Product.getColumn()));
mBinding.recycler.setLayoutManager(isFolder() ? new LinearLayoutManager(getActivity()) : new GridLayoutManager(getContext(), Product.getColumn()));
mAdapter.setViewType(isFolder() ? ViewType.FOLDER : ViewType.GRID);
mAdapter.setSize(Product.getSpec(getActivity()));
}

@ -1,11 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
android:tint="@color/white"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:fillType="evenOdd"
android:pathData="M3,3v8h8L11,3L3,3zM9,9L5,9L5,5h4v4zM3,13v8h8v-8L3,13zM9,19L5,19v-4h4v4zM13,3v8h8L21,3h-8zM19,9h-4L15,5h4v4zM13,13v8h8v-8h-8zM19,19h-4v-4h4v4z" />
android:pathData="M180,450Q155.25,450 137.63,432.38Q120,414.75 120,390L120,180Q120,155.25 137.63,137.63Q155.25,120 180,120L390,120Q414.75,120 432.38,137.63Q450,155.25 450,180L450,390Q450,414.75 432.38,432.38Q414.75,450 390,450L180,450ZM180,840Q155.25,840 137.63,822.38Q120,804.75 120,780L120,570Q120,545.25 137.63,527.63Q155.25,510 180,510L390,510Q414.75,510 432.38,527.63Q450,545.25 450,570L450,780Q450,804.75 432.38,822.38Q414.75,840 390,840L180,840ZM570,450Q545.25,450 527.63,432.38Q510,414.75 510,390L510,180Q510,155.25 527.63,137.63Q545.25,120 570,120L780,120Q804.75,120 822.38,137.63Q840,155.25 840,180L840,390Q840,414.75 822.38,432.38Q804.75,450 780,450L570,450ZM570,840Q545.25,840 527.63,822.38Q510,804.75 510,780L510,570Q510,545.25 527.63,527.63Q545.25,510 570,510L780,510Q804.75,510 822.38,527.63Q840,545.25 840,570L840,780Q840,804.75 822.38,822.38Q804.75,840 780,840L570,840ZM180,390L390,390L390,180L180,180L180,390ZM570,390L780,390L780,180L570,180L570,390ZM570,780L780,780L780,570L570,570L570,780ZM180,780L390,780L390,570L180,570L180,780ZM570,390L570,390L570,390L570,390L570,390ZM570,570L570,570L570,570L570,570L570,570ZM390,570L390,570L390,570L390,570L390,570ZM390,390L390,390L390,390L390,390L390,390Z" />
</vector>

@ -1,10 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
android:tint="@color/white"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M3,14h4v-4H3V14zM3,19h4v-4H3V19zM3,9h4V5H3V9zM8,14h13v-4H8V14zM8,19h13v-4H8V19zM8,5v4h13V5H8z" />
android:pathData="M320,340Q307.25,340 298.63,331.33Q290,322.65 290,309.83Q290,297 298.63,288.5Q307.25,280 320,280L810,280Q822.75,280 831.38,288.67Q840,297.35 840,310.17Q840,323 831.38,331.5Q822.75,340 810,340L320,340ZM320,510Q307.25,510 298.63,501.33Q290,492.65 290,479.83Q290,467 298.63,458.5Q307.25,450 320,450L810,450Q822.75,450 831.38,458.67Q840,467.35 840,480.17Q840,493 831.38,501.5Q822.75,510 810,510L320,510ZM320,680Q307.25,680 298.63,671.33Q290,662.65 290,649.83Q290,637 298.63,628.5Q307.25,620 320,620L810,620Q822.75,620 831.38,628.67Q840,637.35 840,650.17Q840,663 831.38,671.5Q822.75,680 810,680L320,680ZM149.82,340Q137,340 128.5,331.33Q120,322.65 120,309.83Q120,297 128.68,288.5Q137.35,280 150.18,280Q163,280 171.5,288.67Q180,297.35 180,310.17Q180,323 171.32,331.5Q162.65,340 149.82,340ZM149.82,510Q137,510 128.5,501.33Q120,492.65 120,479.83Q120,467 128.68,458.5Q137.35,450 150.18,450Q163,450 171.5,458.67Q180,467.35 180,480.17Q180,493 171.32,501.5Q162.65,510 149.82,510ZM149.82,680Q137,680 128.5,671.33Q120,662.65 120,649.83Q120,637 128.68,628.5Q137.35,620 150.18,620Q163,620 171.5,628.67Q180,637.35 180,650.17Q180,663 171.32,671.5Q162.65,680 149.82,680Z" />
</vector>

@ -22,7 +22,6 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="#CC2196F3"
android:ellipsize="end"
android:padding="4dp"
android:singleLine="true"
android:textColor="@color/white"
@ -37,7 +36,6 @@
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="#CCF44336"
android:ellipsize="end"
android:padding="4dp"
android:singleLine="true"
android:textColor="@color/white"
@ -52,7 +50,6 @@
android:layout_height="wrap_content"
android:layout_above="@+id/name"
android:background="#CC177535"
android:ellipsize="end"
android:padding="4dp"
android:singleLine="true"
android:textColor="@color/white"

@ -71,7 +71,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:ellipsize="end"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="12sp"

Loading…
Cancel
Save