Просмотр исходного кода

视频界面可以选择排序方式;优化视频界面比例

zengjiebin лет назад: 7
Родитель
Сommit
7106c2ce01

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -1563,9 +1563,10 @@ public interface ApiService {
 
     /**
      * 小绵羊3.4.5新增 -- 查询视频列表
+     *  @Param   sort        query   int true       "排序 1:最热 2:最新"
      */
     @GET(ApiKey.getVideoList)
-    Observable<BaseMessage> getVideoList(@Query("page_no") int page, @Query("page_size") int per_page);
+    Observable<BaseMessage> getVideoList(@Query("page_no") int page, @Query("page_size") int per_page, @Query("sort") int sort);
 
     /**
      * 小绵羊3.4.5新增 -- 查询音乐列表

+ 5 - 4
app/src/main/java/com/sheep/gamegroup/module/skin/util/SkinUtil.java

@@ -56,9 +56,9 @@ public class SkinUtil {
     public static final String KEY_CUR_SKIN_MD5 = "cur_skin";//当前正在使用的皮肤的key
     //切换皮肤
     public static void changeSkin(Action1<Object> action1) {
-        curPlugin = getSkinByTime();//需要加载的皮肤
+        Plugin willLoadPlugin = getSkinByTime();//需要加载的皮肤
         String curSkinMd5 = PreferenceUtils.getPrefString(SheepApp.getInstance(), KEY_CUR_SKIN_MD5, null);
-        if(curPlugin == null){//默认皮肤
+        if(willLoadPlugin == null){//默认皮肤
             String curSkinName = SkinPreference.getInstance().getSkinName();
             if(TextUtils.isEmpty(curSkinMd5) || !TextUtils.isEmpty(curSkinName)){
                 PreferenceUtils.setPrefString(SheepApp.getInstance(), KEY_CUR_SKIN_MD5, "");
@@ -68,7 +68,7 @@ public class SkinUtil {
             return;
         }
         Activity activity = SheepApp.getInstance().getCurrentActivity();
-        SheepPluginUtil.checkAndRunPlugin(activity, curPlugin)
+        SheepPluginUtil.checkAndRunPlugin(activity, willLoadPlugin)
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new AbsObserver<Plugin>() {
@@ -80,7 +80,7 @@ public class SkinUtil {
                             return;
                         }
                         String md5 = Md5Util.getFileMD5(file);
-                        String skinName = SheepPluginUtil.getFileName(curPlugin);
+                        String skinName = SheepPluginUtil.getFileName(willLoadPlugin);
                         String curSkinName = SkinPreference.getInstance().getSkinName();
                         if(curSkinMd5 != null && TextUtils.equals(md5, curSkinMd5) && TextUtils.equals(skinName, curSkinName)){//已经加载皮肤
                             action1.call(null);
@@ -96,6 +96,7 @@ public class SkinUtil {
                             @Override
                             public void onSuccess() {
                                 LogUtil.println(SkinUtil.class.getSimpleName(), "changeSkin", "loadSkin", skinName, "onSuccess");
+                                curPlugin = willLoadPlugin;
                                 PreferenceUtils.setPrefString(SheepApp.getInstance(), KEY_CUR_SKIN_MD5, md5);
                                 action1.call(null);
                             }

+ 12 - 0
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -1871,6 +1871,18 @@ public class ViewUtil {
             }
         }
     }
+    public static void roundedCornersImage1(ImageView imageView, String pictures, int radius) {
+        if (imageView != null) {
+            if (TextUtils.isEmpty(pictures)) {
+                imageView.setImageResource(R.mipmap.icon);
+            } else {
+                if (pictures.contains(";")) {
+                    pictures = pictures.split(";")[0];
+                }
+                GlideImageLoader.roundedCornersImage1(imageView, pictures, radius);
+            }
+        }
+    }
 
     public static void setGameImage(ImageView imageView, String pictures) {
         if (imageView != null) {

+ 2 - 2
app/src/main/java/com/sheep/gamegroup/view/adapter/AdpVideo.java

@@ -37,8 +37,8 @@ public class AdpVideo extends RecyclerViewAdapter<DiscoveryVideo> {
         ImageView item_video_cover = viewHolder.itemView.findViewById(R.id.item_video_cover);
         TextView item_video_play_no_tv = viewHolder.itemView.findViewById(R.id.item_video_play_no_tv);
         TextView item_video_time_tv = viewHolder.itemView.findViewById(R.id.item_video_time_tv);
-//        ViewUtil.setViewWH(item_video_cover, item.getCover(), width);
-        ViewUtil.setImageWH(item_video_cover, item.getCover(), width, G.getRealPix(5));
+        ViewUtil.setViewWH(item_video_cover, width, 1920 / 1080.f);
+        ViewUtil.roundedCornersImage1(item_video_cover, item.getCover(), G.getRealPix(5));
         ViewUtil.setVisibility(item_video_play_no_tv, item.getPlay() > 0);
         ViewUtil.setText(item_video_play_no_tv, String.format(Locale.CHINA, "%s次播放", NumberFormatUtils.getText(item.getPlay())));
         ViewUtil.setText(item_video_time_tv, TimeUtil.getDurationText(item.getDuration()));

+ 52 - 7
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtArticleVideo.java

@@ -2,18 +2,31 @@ package com.sheep.gamegroup.view.fragment;
 
 import android.os.Bundle;
 import android.support.annotation.Nullable;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.StaggeredGridLayoutManager;
+import android.widget.TextView;
 
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.BaseViewHolder;
 import com.sheep.gamegroup.model.api.ApiService;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.DiscoveryVideo;
+import com.sheep.gamegroup.util.ListUtil;
+import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.view.adapter.AdpVideo;
 import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
 import org.afinal.simplecache.ApiKey;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import butterknife.BindView;
 import io.reactivex.Observable;
 
 /**
@@ -22,18 +35,47 @@ import io.reactivex.Observable;
  * 小绵羊3.4.5新增 -- 发现视频列表
  */
 public class FgtArticleVideo extends BaseListFragment5<DiscoveryVideo> {
+
+    @BindView(R.id.tab_list)
+    protected RecyclerView tab_list;
+
+    @Override
+    public int getLayoutId() {
+        return R.layout.net_empty_xrecycler_rv;
+    }
+
+    private List<String> sortNameList = new ArrayList<>();
+    private int curPosition;//排序的位置
+    public static final String[] SORT_NAMES = {"最热", "最新"};
+    public static final int[] SORT_ID = {1, 2};
+     // @Param   sort        query   int true       "排序 1:最热 2:最新"
     @Override
     public void initView() {
         super.initView();
-        view_list.setPadding(G.getRealPix(8), G.getRealPix(14), G.getRealPix(8), G.getRealPix(14));
+        Collections.addAll(sortNameList, SORT_NAMES);
+        tab_list.setLayoutManager(new GridLayoutManager(SheepApp.getInstance(), 2));
+        BaseQuickAdapter<String, BaseViewHolder> baseQuickAdapter = new BaseQuickAdapter<String, BaseViewHolder>(R.layout.item_tab, sortNameList) {
+            @Override
+            protected void convert(BaseViewHolder helper, String item) {
+                int position = helper.getAdapterPosition();
+                TextView textView = helper.getView(R.id.item_tab_tv);
+                ViewUtil.setColorMapText(textView, item, item, curPosition == position ? "#2ebef2" : "#AFAFAF");
+            }
+        };
+        baseQuickAdapter.bindToRecyclerView(tab_list);
+        baseQuickAdapter.setOnItemClickListener((adapter, view, position) -> {
+            curPosition = position;
+            baseQuickAdapter.notifyDataSetChanged();
+            refreshData();
+        });
+        view_list.setPadding(G.getRealPix(8), 0, G.getRealPix(8), G.getRealPix(14));
     }
 
     @Override
     protected RecyclerView.LayoutManager getLayoutManager() {
-        StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
-//        layoutManager.setItemPrefetchEnabled(true);
-//        layoutManager.setMeasurementCacheEnabled(true);
-        return layoutManager;
+//        StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
+//        return layoutManager;
+        return new GridLayoutManager(SheepApp.getInstance(), 2);
     }
 
     @Override
@@ -43,12 +85,15 @@ public class FgtArticleVideo extends BaseListFragment5<DiscoveryVideo> {
 
     @Override
     protected String getKey(int page, int per_page) {
-        return ApiKey.pageKeyUrl2(ApiKey.getVideoList, page, per_page);
+        return ApiKey.pageKeyUrl2(ApiKey.getVideoList, page, per_page) + "sort=" + getCurSort();
     }
 
     @Override
     protected Observable<BaseMessage> getApi(ApiService apiService) {
-        return apiService.getVideoList(page, per_page);
+        return apiService.getVideoList(page, per_page, getCurSort());
+    }
+    private int getCurSort(){
+        return SORT_ID[curPosition % SORT_ID.length];
     }
 
     @Override

+ 12 - 0
app/src/main/res/layout/item_tab.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/item_tab_tv"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="6dp"
+    android:paddingTop="5dp"
+    android:paddingBottom="5dp"
+    android:gravity="center"
+    android:text="最热"
+    android:textColor="#2ebef2"
+    android:textSize="14sp" />

+ 34 - 0
app/src/main/res/layout/net_empty_xrecycler_rv.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white"
+    android:fitsSystemWindows="true">
+
+    <include
+        android:id="@+id/check_net_ll"
+        layout="@layout/check_net_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:visibility="gone" />
+
+    <include
+        android:id="@+id/empty_view"
+        layout="@layout/empty_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/check_net_ll" />
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/tab_list"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/check_net_ll" />
+
+    <com.jcodecraeer.xrecyclerview.XRecyclerView
+        android:id="@+id/view_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/tab_list"
+        android:descendantFocusability="blocksDescendants" />
+</RelativeLayout>