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

+ 5 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/HomeListEntity.java

@@ -4,6 +4,7 @@ import android.text.TextUtils;
 
 import com.sheep.gamegroup.absBase.IJumpWeb;
 import com.sheep.gamegroup.module.home.api.IHomeList;
+import com.sheep.gamegroup.util.ListUtil;
 
 import java.util.List;
 
@@ -239,4 +240,8 @@ public class HomeListEntity implements IJumpWeb, IHomeList {
     public boolean needJsInteract() {
         return IsNeedJsInteract == IJumpWeb.NEEDJSINTERACT;
     }
+
+    public boolean hasChild() {
+        return !ListUtil.isEmpty(child_list);
+    }
 }

+ 62 - 0
app/src/main/java/com/sheep/gamegroup/util/CommonUtil.java

@@ -12,15 +12,23 @@ import android.os.Handler;
 import android.os.Message;
 import android.support.design.widget.TabLayout;
 import android.support.v7.app.AlertDialog;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
 import android.text.Html;
 import android.text.TextUtils;
 import android.util.TypedValue;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewTreeObserver;
+import android.view.WindowManager;
 import android.webkit.WebView;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
+import android.widget.PopupWindow;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
@@ -63,7 +71,11 @@ import com.sheep.gamegroup.model.entity.WithdrawalEty;
 import com.sheep.gamegroup.model.entity.XiaomiGameEntity;
 import com.sheep.gamegroup.model.util.EntityUtils;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.module.home.adapter.AdpDailyPlay;
+import com.sheep.gamegroup.module.home.adapter.AdpHomeList;
+import com.sheep.gamegroup.module.skin.util.SkinUtil;
 import com.sheep.gamegroup.usage.AppUsageManager;
+import com.sheep.gamegroup.util.viewHelper.PopupWindowUtil;
 import com.sheep.gamegroup.view.activity.ActMain;
 import com.sheep.gamegroup.view.activity.GameTaskOrderListAct;
 import com.sheep.gamegroup.view.activity.ActWebX5YF;
@@ -2778,4 +2790,54 @@ public class CommonUtil {
     public boolean hasYouFanLauncher() {
         return DataUtil.getAsBoolean(ActWebX5YF.KEY_HAS_YOU_FAN_LAUNCHER, false);
     }
+
+    public void showHomeList(Activity activity, List<HomeListEntity> child_list, View anchor) {
+        CharSequence copyText = StringUtils.getCopyText();
+        String copy;
+        if(copyText == null){
+            copy = "1;0;100;35;-50";
+        } else {
+            copy = copyText.toString();
+        }
+        String[] items = copy.split(";");
+        int i = 0;
+        int n = Integer.parseInt(items[i++]);
+        int p = Integer.parseInt(items[i++]);
+        int w = Integer.parseInt(items[i++]);
+        int x = Integer.parseInt(items[i++]);
+        int y = Integer.parseInt(items[i++]);
+        while (n != child_list.size()){
+            if(n > child_list.size())
+                child_list.add(child_list.get(0));
+            else
+                child_list.remove(0);
+        }
+
+        View contentView = LayoutInflater.from(activity).inflate(R.layout.pop_hom_list_tip, null, false);
+        int padding = G.getRealPix(p);
+        contentView.setPadding(padding, padding, padding, padding);
+        RecyclerView home_list_rv = contentView.findViewById(R.id.view_list);
+
+        int size = child_list.size();
+        int spanCount = Math.min(3, size);
+        int hang = ListUtil.getTotalPage(size, spanCount);
+        GridLayoutManager manager = new GridLayoutManager(SheepApp.getInstance(), spanCount);
+        home_list_rv.setHasFixedSize(true);
+        home_list_rv.setNestedScrollingEnabled(false);
+        home_list_rv.setLayoutManager(manager);
+        AdpHomeList<HomeListEntity> adpHomeList = new AdpHomeList<>(R.layout.item_my_list_but2, child_list);
+        adpHomeList.bindToRecyclerView(home_list_rv);
+        adpHomeList.setOnItemClickListener((adapter, view, position) -> {
+            HomeListEntity item = ListUtil.getItem(child_list, position);
+            if (item == null) {
+                return;
+            }
+            UMConfigUtils.IdEvent.HOME_LIST.commit(item.getId());
+            CommonUtil.getInstance().goWhere(activity, item, "首页");
+        });
+
+        PopupWindowUtil.showLayout(activity, new PopupWindowUtil.PopupWindowParams(contentView).setAnchor(anchor)
+                .setWidth(G.getRealPix(spanCount * w + p)).setXoff(G.getRealPix(x)).setYoff(G.getRealPix(y))
+                .setGravity(Gravity.BOTTOM).setOutsideTouchable(true).setFocusable(true));
+    }
 }

+ 28 - 0
app/src/main/java/com/sheep/gamegroup/util/viewHelper/DialogUtil.java

@@ -0,0 +1,28 @@
+package com.sheep.gamegroup.util.viewHelper;
+
+import android.content.Context;
+import android.content.DialogInterface;
+import android.support.v7.app.AlertDialog;
+import android.view.View;
+
+import com.sheep.jiuyan.samllsheep.R;
+
+/**
+ * Created by realicing on 2019/3/28.
+ * realicing@sina.com
+ */
+public class DialogUtil {
+
+    public static AlertDialog showDialog(Context context, View contentView, DialogInterface.OnDismissListener onDismissListener) {
+        final AlertDialog dialog = new AlertDialog.Builder(context, R.style.AppTheme_Dialog_Alert)
+                .setView(contentView)
+                .create();
+        dialog.setOnDismissListener(onDismissListener);
+        try {
+            dialog.show();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return dialog;
+    }
+}

+ 21 - 1
app/src/main/java/com/sheep/gamegroup/util/viewHelper/PopupWindowUtil.java

@@ -43,7 +43,12 @@ public class PopupWindowUtil {
     }
     public static PopupWindow showLayout(Activity activity, PopupWindowParams popupWindowParams) {
         // 用于PopupWindow的View
-        View contentView= LayoutInflater.from(activity).inflate(popupWindowParams.layoutId, null, false);
+        View contentView;
+        if(popupWindowParams.layoutId > 0) {
+            contentView = LayoutInflater.from(activity).inflate(popupWindowParams.layoutId, null, false);
+        } else {
+            contentView = popupWindowParams.contentView;
+        }
         // 创建PopupWindow对象,其中:
         // 第一个参数是用于PopupWindow中的View,第二个参数是PopupWindow的宽度,
         // 第三个参数是PopupWindow的高度,第四个参数指定PopupWindow能否获得焦点
@@ -54,6 +59,8 @@ public class PopupWindowUtil {
         window.setOutsideTouchable(popupWindowParams.outsideTouchable);
         // 设置PopupWindow是否能响应点击事件
         window.setTouchable(popupWindowParams.focusable);
+        //是否响应返回键与点击外部消失
+        window.setFocusable(popupWindowParams.focusable);
         // 显示PopupWindow,其中:
         // 第一个参数是PopupWindow的锚点,第二和第三个参数分别是PopupWindow相对锚点的x、y偏移
         try {
@@ -74,6 +81,7 @@ public class PopupWindowUtil {
         private int width = WindowManager.LayoutParams.WRAP_CONTENT;
         private int height = WindowManager.LayoutParams.WRAP_CONTENT;
         private View anchor;
+        private View contentView;
         private int xoff = 0;
         private int yoff = 0;
         private boolean outsideTouchable = false;
@@ -83,6 +91,9 @@ public class PopupWindowUtil {
        public PopupWindowParams(int layoutId) {
            this.layoutId = layoutId;
        }
+       public PopupWindowParams(View contentView) {
+           this.contentView = contentView;
+       }
 
        public int getLayoutId() {
             return layoutId;
@@ -133,6 +144,15 @@ public class PopupWindowUtil {
             return this;
         }
 
+        public View getContentView() {
+            return contentView;
+        }
+
+        public PopupWindowParams setContentView(View contentView) {
+            this.contentView = contentView;
+            return this;
+        }
+
         public int getXoff() {
             return xoff;
         }

+ 5 - 1
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtSmallSheep.java

@@ -987,7 +987,11 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
                 return;
             }
             UMConfigUtils.IdEvent.HOME_LIST.commit(item.getId());
-            CommonUtil.getInstance().goWhere(activity, item, "首页");
+            if(item.hasChild()){
+                CommonUtil.getInstance().showHomeList(activity, item.getChild_list(), view);
+            } else {
+                CommonUtil.getInstance().goWhere(activity, item, "首页");
+            }
         });
     }
 

+ 41 - 0
app/src/main/res/layout/item_my_list_but2.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/my_item_but"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingTop="10dp"
+    android:paddingBottom="10dp">
+
+    <ImageView
+        android:id="@+id/my_item_img"
+        android:layout_width="match_parent"
+        android:layout_marginEnd="5dp"
+        android:layout_height="47dp"
+        android:scaleType="fitCenter"
+        android:src="@drawable/icon" />
+
+    <TextView
+        android:id="@+id/my_item_text"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/my_item_img"
+        android:layout_marginTop="5dp"
+        android:layout_marginEnd="5dp"
+        android:singleLine="true"
+        android:gravity="center"
+        android:text="试玩赚钱"
+        android:textColor="@color/white"
+        android:textSize="13sp" />
+
+    <TextView
+        android:id="@+id/my_item_tag"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentEnd="true"
+        android:layout_marginEnd="5dp"
+        android:gravity="center"
+        android:text="试玩"
+        android:textColor="@color/black_6_3"
+        android:textSize="7sp" />
+</RelativeLayout>

+ 13 - 0
app/src/main/res/layout/pop_hom_list_tip.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:background="@mipmap/bg_home_list_tip"
+    android:orientation="horizontal">
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/view_list"
+        android:layout_marginTop="10dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+</LinearLayout>

BIN
app/src/main/res/mipmap-xxhdpi/bg_home_list_tip.9.png