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

小绵羊h5支付宝支付功能调试

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

+ 6 - 18
app/src/main/AndroidManifest.xml

@@ -398,6 +398,9 @@
             android:name="com.sheep.gamegroup.view.activity.ActWeb"
             android:name="com.sheep.gamegroup.view.activity.ActWeb"
             android:screenOrientation="portrait" />
             android:screenOrientation="portrait" />
         <activity
         <activity
+            android:name="com.sheep.gamegroup.view.activity.ActWebX5"
+            android:screenOrientation="portrait" />
+        <activity
             android:name="com.sheep.gamegroup.view.activity.ActMyMoney"
             android:name="com.sheep.gamegroup.view.activity.ActMyMoney"
             android:screenOrientation="portrait" />
             android:screenOrientation="portrait" />
         <activity
         <activity
@@ -768,34 +771,19 @@
             </intent-filter>
             </intent-filter>
         </receiver>
         </receiver>
         <!-- end幂动科技 -->
         <!-- end幂动科技 -->
-        <!-- start 有米科技 -->
-
-        <activity
-            android:name="com.youmi.android.offerdemo.PermissionCheckActivity"
-            android:screenOrientation="portrait" />
-        <activity
-            android:name="com.youmi.android.offerdemo.YoumiOffersAdsDemo"
-            android:screenOrientation="portrait" />
-        <!-- end 有米科技 -->
         <!-- 签到 -->
         <!-- 签到 -->
         <activity
         <activity
             android:name=".ui.activity.SignActivity"
             android:name=".ui.activity.SignActivity"
             android:screenOrientation="portrait"
             android:screenOrientation="portrait"
             android:theme="@style/AppTheme.NoTitleBar.AlphaStatusBar" />
             android:theme="@style/AppTheme.NoTitleBar.AlphaStatusBar" />
-        <!-- 用户引导 -->
-        <activity
-            android:name=".ui.activity.UserNavActivity"
-            android:configChanges="orientation|screenSize"
-            android:screenOrientation="portrait" />
         <!-- 活动规则 -->
         <!-- 活动规则 -->
         <activity
         <activity
             android:name=".ui.activity.ActiveRuleActivity"
             android:name=".ui.activity.ActiveRuleActivity"
             android:screenOrientation="portrait" />
             android:screenOrientation="portrait" />
-        <!-- 全屏视频播放 -->
+        <!-- 小绵羊3.4.5 我的关注  -->
         <activity
         <activity
-            android:name=".ui.activity.PlayVideoActivity"
-            android:configChanges="orientation|screenSize"
-            android:screenOrientation="landscape" />
+            android:name="com.sheep.gamegroup.view.activity.ActMyFocus"
+            android:screenOrientation="portrait" />
     </application>
     </application>
 
 
 </manifest>
 </manifest>

+ 21 - 0
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -1134,6 +1134,27 @@ public interface ApiService {
      */
      */
     @POST("app/game_user/focus_user")
     @POST("app/game_user/focus_user")
     Observable<BaseMessage> postGameUserFocusUser(@Query("focus_user_id") int focus_user_id);
     Observable<BaseMessage> postGameUserFocusUser(@Query("focus_user_id") int focus_user_id);
+    /**
+     * 热门用户列表
+     * page * integer (query) 页码
+     * per_page * integer (query) 每页显示条数默认10条
+     */
+    @GET(ApiKey.getGameUserUserFocusHotUser)
+    Observable<BaseMessage> getGameUserUserFocusHotUser(@Query("page") int page, @Query("per_page") int per_page);
+    /**
+     * 关注的用户列表
+     * page * integer (query) 页码
+     * per_page * integer (query) 每页显示条数默认10条
+     */
+    @GET(ApiKey.getGameUserUserFocusList)
+    Observable<BaseMessage> getGameUserUserFocusList(@Query("page") int page, @Query("per_page") int per_page);
+    /**
+     * 关注的游戏列表
+     * page * integer (query) 页码
+     * per_page * integer (query) 每页显示条数默认10条
+     */
+    @GET(ApiKey.getGameUserGameFocusList)
+    Observable<BaseMessage> getGameUserGameFocusList(@Query("page") int page, @Query("per_page") int per_page);
 
 
     /**
     /**
      * 查询最近在玩以及同类型游戏
      * 查询最近在玩以及同类型游戏

+ 49 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/UserFocusGame.java

@@ -0,0 +1,49 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/11/22.
+ * realicing@sina.com
+ * 小绵羊3.4.5新增--用户关注的游戏
+ */
+public class UserFocusGame {
+    private int CreateTime;
+
+    private Applications applications;
+
+    private int focus_game_id;
+
+    private int id;
+
+    private int user_id;
+
+    public void setCreateTime(int CreateTime){
+        this.CreateTime = CreateTime;
+    }
+    public int getCreateTime(){
+        return this.CreateTime;
+    }
+    public void setApplications(Applications applications){
+        this.applications = applications;
+    }
+    public Applications getApplications(){
+        return this.applications;
+    }
+    public void setFocus_game_id(int focus_game_id){
+        this.focus_game_id = focus_game_id;
+    }
+    public int getFocus_game_id(){
+        return this.focus_game_id;
+    }
+    public void setId(int id){
+        this.id = id;
+    }
+    public int getId(){
+        return this.id;
+    }
+    public void setUser_id(int user_id){
+        this.user_id = user_id;
+    }
+    public int getUser_id(){
+        return this.user_id;
+    }
+}

+ 65 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/UserFocusLog.java

@@ -0,0 +1,65 @@
+package com.sheep.gamegroup.model.entity;
+
+/**
+ * Created by realicing on 2018/11/22.
+ * realicing@sina.com
+ * 小绵羊3.4.5新增--用户关注的用户
+ */
+public class UserFocusLog {
+    private String avatar;
+
+    private int create_time;
+
+    private int focus_user_id;
+
+    private int id;
+
+    private String nickname;
+
+    private int user_id;
+
+    private String user_type;
+
+    public void setAvatar(String avatar){
+        this.avatar = avatar;
+    }
+    public String getAvatar(){
+        return this.avatar;
+    }
+    public void setCreate_time(int create_time){
+        this.create_time = create_time;
+    }
+    public int getCreate_time(){
+        return this.create_time;
+    }
+    public void setFocus_user_id(int focus_user_id){
+        this.focus_user_id = focus_user_id;
+    }
+    public int getFocus_user_id(){
+        return this.focus_user_id;
+    }
+    public void setId(int id){
+        this.id = id;
+    }
+    public int getId(){
+        return this.id;
+    }
+    public void setNickname(String nickname){
+        this.nickname = nickname;
+    }
+    public String getNickname(){
+        return this.nickname;
+    }
+    public void setUser_id(int user_id){
+        this.user_id = user_id;
+    }
+    public int getUser_id(){
+        return this.user_id;
+    }
+    public void setUser_type(String user_type){
+        this.user_type = user_type;
+    }
+    public String getUser_type(){
+        return this.user_type;
+    }
+}

+ 14 - 4
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -65,6 +65,7 @@ import com.sheep.gamegroup.view.activity.ActLoadH5;
 import com.sheep.gamegroup.view.activity.ActMain;
 import com.sheep.gamegroup.view.activity.ActMain;
 import com.sheep.gamegroup.view.activity.ActMiDong;
 import com.sheep.gamegroup.view.activity.ActMiDong;
 import com.sheep.gamegroup.view.activity.ActModifyThird;
 import com.sheep.gamegroup.view.activity.ActModifyThird;
+import com.sheep.gamegroup.view.activity.ActMyFocus;
 import com.sheep.gamegroup.view.activity.ActMyMoney;
 import com.sheep.gamegroup.view.activity.ActMyMoney;
 import com.sheep.gamegroup.view.activity.ActMyWelfare;
 import com.sheep.gamegroup.view.activity.ActMyWelfare;
 import com.sheep.gamegroup.view.activity.ActNewAboutUs;
 import com.sheep.gamegroup.view.activity.ActNewAboutUs;
@@ -89,7 +90,7 @@ import com.sheep.gamegroup.view.activity.ActUserAppHome;
 import com.sheep.gamegroup.view.activity.ActUserCommentDetail;
 import com.sheep.gamegroup.view.activity.ActUserCommentDetail;
 import com.sheep.gamegroup.view.activity.ActUserLabelList;
 import com.sheep.gamegroup.view.activity.ActUserLabelList;
 import com.sheep.gamegroup.view.activity.ActUserNoviceGuidance;
 import com.sheep.gamegroup.view.activity.ActUserNoviceGuidance;
-import com.sheep.gamegroup.view.activity.ActWeb;
+import com.sheep.gamegroup.view.activity.ActWebX5;
 import com.sheep.gamegroup.view.activity.ActXianWanWeb;
 import com.sheep.gamegroup.view.activity.ActXianWanWeb;
 import com.sheep.gamegroup.view.activity.ActXiaomiGame;
 import com.sheep.gamegroup.view.activity.ActXiaomiGame;
 import com.sheep.gamegroup.view.activity.AskGetMoneyAct;
 import com.sheep.gamegroup.view.activity.AskGetMoneyAct;
@@ -146,11 +147,11 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Locale;
 import java.util.Locale;
 
 
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
 import me.iwf.photopicker.PhotoPicker;
 import me.iwf.photopicker.PhotoPicker;
 import me.iwf.photopicker.PhotoPreview;
 import me.iwf.photopicker.PhotoPreview;
-import io.reactivex.android.schedulers.AndroidSchedulers;
 import rx.functions.Action1;
 import rx.functions.Action1;
-import io.reactivex.schedulers.Schedulers;
 
 
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.ASK_MAKE_MONEY_INVITATION;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.ASK_MAKE_MONEY_INVITATION;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_ITEM;
 import static com.sheep.gamegroup.util.UMConfigUtils.Event.FIND_ITEM;
@@ -940,7 +941,7 @@ public class Jump2View {
         if (!url.startsWith("http") && !url.contains("://")) {
         if (!url.startsWith("http") && !url.contains("://")) {
             url = "http://" + url;
             url = "http://" + url;
         }
         }
-        Intent intent = new Intent(context, ActWeb.class);
+        Intent intent = new Intent(context, ActWebX5.class);
         intent.putExtra("url", url);
         intent.putExtra("url", url);
         intent.putExtra("title", TextUtils.isEmpty(title) ? "加载中..." : title);
         intent.putExtra("title", TextUtils.isEmpty(title) ? "加载中..." : title);
         context.startActivity(intent);
         context.startActivity(intent);
@@ -2231,4 +2232,13 @@ public class Jump2View {
         intent.putExtra("jsUrl", jsUrl);
         intent.putExtra("jsUrl", jsUrl);
         activity.startActivity(intent);
         activity.startActivity(intent);
     }
     }
+
+    /**
+     * 小绵羊3.4.5新增--跳转到我的关注界面
+     */
+    public void goActMyFocus() {
+        Activity activity = ActivityManager.getInstance().currentActivity();
+        Intent intent = new Intent(activity, ActMyFocus.class);
+        activity.startActivity(intent);
+    }
 }
 }

+ 4 - 0
app/src/main/java/com/sheep/gamegroup/util/TestUtil.java

@@ -232,6 +232,7 @@ public class TestUtil {
      */
      */
     public static void test(final Activity activity) {
     public static void test(final Activity activity) {
         final String[] items = {"复制token","复制打点数据","从jenkins下载小绵羊安装包","测试表情包",
         final String[] items = {"复制token","复制打点数据","从jenkins下载小绵羊安装包","测试表情包",
+                "我的关注",
                 "测试联通卡","测试联通卡2","测试签名1","测试签名2","测试孔剑秋faq正式服",
                 "测试联通卡","测试联通卡2","测试签名1","测试签名2","测试孔剑秋faq正式服",
                 "跳转QQ1","跳转QQ2","跳转QQ3","跳转白白QQ","龙猫竞猜","龙猫竞猜-scheme",
                 "跳转QQ1","跳转QQ2","跳转QQ3","跳转白白QQ","龙猫竞猜","龙猫竞猜-scheme",
                 "有米科技","手机型号测试","测试通知栏", "测试自定义通知栏","测试自定义通知栏2",
                 "有米科技","手机型号测试","测试通知栏", "测试自定义通知栏","测试自定义通知栏2",
@@ -250,6 +251,9 @@ public class TestUtil {
                     @Override
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                     public void onClick(DialogInterface dialog, int which) {
                         switch (items[which]) {
                         switch (items[which]) {
+                            case "我的关注":
+                                Jump2View.getInstance().goActMyFocus();
+                                break;
                             case "测试联通卡":
                             case "测试联通卡":
                                 Jump2View.getInstance().goActOverrideJsWeb(activity, items[which], "http://10.8.210.236:5000/#/", "http://10.8.210.236:5000/chart.js");
                                 Jump2View.getInstance().goActOverrideJsWeb(activity, items[which], "http://10.8.210.236:5000/#/", "http://10.8.210.236:5000/chart.js");
                                 break;
                                 break;

+ 51 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActMyFocus.java

@@ -0,0 +1,51 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.support.design.widget.TabLayout;
+import android.support.v4.view.ViewPager;
+
+import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.view.adapter.TitleFragmentListAdapter;
+import com.sheep.gamegroup.view.fragment.FgtGameFocusList;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+
+import butterknife.BindView;
+
+/**
+ * Created by realicing on 2018/11/22.
+ * realicing@sina.com
+ * 小绵羊3.4.5新界面--我的关注
+ */
+public class ActMyFocus extends BaseActivity {
+    @Override
+    protected int getLayoutId() {
+        return R.layout.common_tab_vp;
+    }
+
+    @BindView(R.id.indicator)
+    TabLayout indicator;
+    @BindView(R.id.pager)
+    ViewPager pager;
+    private TitleFragmentListAdapter mAdapter;
+
+    @Override
+    public void initView() {
+        TitleBarUtils.getInstance().setTitle(this, "我的关注")
+                .setTitleFinish(this);
+
+    }
+
+
+    @Override
+    public void initData() {
+        mAdapter = new TitleFragmentListAdapter(getSupportFragmentManager());
+        mAdapter.add(new FgtGameFocusList(), "游戏");
+        mAdapter.add(new FgtGameFocusList(), "人员");
+        pager.setAdapter(mAdapter);
+        indicator.setupWithViewPager(pager);
+        pager.setCurrentItem(0);
+        pager.setOffscreenPageLimit(mAdapter.getCount());
+        CommonUtil.getInstance().reflex(indicator, this);
+    }
+}

+ 24 - 8
app/src/main/java/com/sheep/gamegroup/view/activity/ActWeb.java

@@ -4,6 +4,7 @@ import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.app.Activity;
 import android.content.DialogInterface;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.Intent;
+import android.graphics.Bitmap;
 import android.net.Uri;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Build;
 import android.os.Environment;
 import android.os.Environment;
@@ -13,6 +14,11 @@ import android.support.v7.app.AlertDialog;
 import android.text.TextUtils;
 import android.text.TextUtils;
 import android.view.View;
 import android.view.View;
 import android.webkit.JavascriptInterface;
 import android.webkit.JavascriptInterface;
+import android.webkit.ValueCallback;
+import android.webkit.WebChromeClient;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
 
 
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.absBase.BaseActivity;
 import com.sheep.gamegroup.util.ApiUtil;
 import com.sheep.gamegroup.util.ApiUtil;
@@ -28,11 +34,6 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
 import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
-import com.tencent.smtt.sdk.ValueCallback;
-import com.tencent.smtt.sdk.WebChromeClient;
-import com.tencent.smtt.sdk.WebSettings;
-import com.tencent.smtt.sdk.WebView;
-import com.tencent.smtt.sdk.WebViewClient;
 import com.yalantis.ucrop.util.FileUtils;
 import com.yalantis.ucrop.util.FileUtils;
 
 
 import java.io.File;
 import java.io.File;
@@ -86,7 +87,7 @@ public class ActWeb extends BaseActivity {
             e.printStackTrace();
             e.printStackTrace();
         }
         }
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-//            webViewSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
+            webViewSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
         }
         }
 
 
         loadUrl();
         loadUrl();
@@ -149,7 +150,7 @@ public class ActWeb extends BaseActivity {
             @Override
             @Override
             public void onReceivedTitle(WebView view, String title) {
             public void onReceivedTitle(WebView view, String title) {
                 super.onReceivedTitle(view, title);
                 super.onReceivedTitle(view, title);
-                if (title == null)
+                if (ActWeb.this.title != null)
                     TitleBarUtils
                     TitleBarUtils
                             .getInstance()
                             .getInstance()
                             .setTitle(ActWeb.this, title);
                             .setTitle(ActWeb.this, title);
@@ -226,8 +227,10 @@ public class ActWeb extends BaseActivity {
             }
             }
         });
         });
         mWebView.setWebViewClient(new WebViewClient() {
         mWebView.setWebViewClient(new WebViewClient() {
+
             @Override
             @Override
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
             public boolean shouldOverrideUrlLoading(WebView view, String url) {
+                LogUtil.println("ActWeb", "shouldOverrideUrlLoading", url);
                 //微信H5支付核心代码
                 //微信H5支付核心代码
                 if (url.startsWith("weixin://wap/pay?")) {
                 if (url.startsWith("weixin://wap/pay?")) {
                     try {
                     try {
@@ -260,7 +263,7 @@ public class ActWeb extends BaseActivity {
                     extraHeaders.put("Referer", "http://17xmy.com");
                     extraHeaders.put("Referer", "http://17xmy.com");
                     view.loadUrl(url, extraHeaders);
                     view.loadUrl(url, extraHeaders);
                     return true;
                     return true;
-                } else if(url.contains("kfzs.com")){
+                } else if(url.contains("kfzs.com") || (url.startsWith("http://10.8.") && TestUtil.isDev())){
                     Map<String, String> extraHeaders = new HashMap<>();
                     Map<String, String> extraHeaders = new HashMap<>();
                     extraHeaders.put("Referer", "http://kfzs.com");
                     extraHeaders.put("Referer", "http://kfzs.com");
                     view.loadUrl(url, extraHeaders);
                     view.loadUrl(url, extraHeaders);
@@ -271,7 +274,20 @@ public class ActWeb extends BaseActivity {
             }
             }
 
 
             @Override
             @Override
+            public void onPageCommitVisible(WebView view, String url) {
+                LogUtil.println("ActWeb", "onPageCommitVisible", url);
+                super.onPageCommitVisible(view, url);
+            }
+
+            @Override
+            public void onPageStarted(WebView view, String url, Bitmap favicon) {
+                LogUtil.println("ActWeb", "onPageStarted", url);
+                super.onPageStarted(view, url, favicon);
+            }
+
+            @Override
             public void onPageFinished(WebView view, String url) {
             public void onPageFinished(WebView view, String url) {
+                LogUtil.println("ActWeb", "onPageFinished", url);
                 super.onPageFinished(view, url);
                 super.onPageFinished(view, url);
                 imgReset();
                 imgReset();
             }
             }

+ 546 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActWebX5.java

@@ -0,0 +1,546 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Environment;
+import android.provider.MediaStore;
+import android.support.annotation.RequiresApi;
+import android.support.v7.app.AlertDialog;
+import android.text.TextUtils;
+import android.view.View;
+import android.webkit.JavascriptInterface;
+
+import com.sheep.gamegroup.absBase.BaseActivity;
+import com.sheep.gamegroup.util.ApiUtil;
+import com.sheep.gamegroup.util.CommonUtil;
+import com.sheep.gamegroup.util.DataUtil;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.LogUtil;
+import com.sheep.gamegroup.util.QQUtil;
+import com.sheep.gamegroup.util.TestUtil;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
+import com.sheep.jiuyan.samllsheep.utils.SpUtils;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+import com.tencent.smtt.sdk.ValueCallback;
+import com.tencent.smtt.sdk.WebChromeClient;
+import com.tencent.smtt.sdk.WebSettings;
+import com.tencent.smtt.sdk.WebView;
+import com.tencent.smtt.sdk.WebViewClient;
+import com.yalantis.ucrop.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import butterknife.BindView;
+import rx.functions.Action1;
+
+
+/**
+ * web页面--含有所有js及url后添加authorization
+ * Created by zengjiebin on 2018/4/27.
+ */
+public class ActWebX5 extends BaseActivity {
+
+    @BindView(R.id.webview)
+    WebView mWebView;
+    @BindView(R.id.layout_navigationBar)
+    View layout_navigationBar;
+
+    private String title;//title为空时,不显示整个标题栏
+    private String url;
+    private WebSettings webViewSettings;
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.act_web_x5;
+    }
+
+    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
+    @Override
+    public void initView() {
+        url = getIntent().getStringExtra("url");
+        title = getIntent().getStringExtra("title");//title为空时,不显示整个标题栏
+        if (!TextUtils.isEmpty(url)) {
+            url = url.trim();
+        }
+        TitleBarUtils
+                .getInstance()
+                .setTitle(this, TextUtils.isEmpty(title) ? "加载中" : title)
+                .setTitleFinish(this);
+        initWebViewSettings(mWebView);
+        webViewSettings = mWebView.getSettings();
+        webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
+        try {
+            if (TestUtil.isTest())
+                WebView.setWebContentsDebuggingEnabled(true);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+//            webViewSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
+        }
+
+        loadUrl();
+    }
+
+    @Override
+    public void initListener() {
+        CommonUtil.getInstance().setDownloadListener(this, mWebView);
+    }
+
+    public static void initWebViewSettings(WebView webView) {
+        webView.setClickable(true);
+        WebSettings webSetting = webView.getSettings();
+        webSetting.setJavaScriptEnabled(true);
+        webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
+        webSetting.setAllowFileAccess(true);
+        webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
+//        webSetting.setSupportZoom(true);
+//        webSetting.setBuiltInZoomControls(true);
+        webSetting.setUseWideViewPort(true);
+        webSetting.setSupportMultipleWindows(true);
+        // webSetting.setLoadWithOverviewMode(true);
+        webSetting.setAppCacheEnabled(true);
+        // webSetting.setDatabaseEnabled(true);
+        webSetting.setDomStorageEnabled(true);
+        webSetting.setGeolocationEnabled(true);
+        webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
+        // webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);
+        webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
+        // webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
+        webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);
+
+        // this.getSettingsExtension().setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);//extension
+        // settings 的设计
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (mWebView != null) {
+            mWebView.setVisibility(View.GONE);
+            mWebView.removeAllViews();
+            mWebView.destroy();
+        }
+    }
+
+    /**
+     *
+     */
+    public static final int INPUT_FILE_REQUEST_CODE = 1;
+    private ValueCallback<Uri> mUploadMessage;
+    private final static int FILECHOOSER_RESULTCODE = 2;
+    private ValueCallback<Uri[]> mFilePathCallback;
+
+    private String mCameraPhotoPath;
+
+    private void loadUrl() {
+
+        mWebView.setWebChromeClient(new WebChromeClient() {
+            @Override
+            public void onReceivedTitle(WebView view, String title) {
+                super.onReceivedTitle(view, title);
+                if (ActWebX5.this.title == null)
+                    TitleBarUtils
+                            .getInstance()
+                            .setTitle(ActWebX5.this, title);
+            }
+
+            @Override
+            public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
+                if (mFilePathCallback != null) {
+                    mFilePathCallback.onReceiveValue(null);
+                }
+                mFilePathCallback = filePathCallback;
+
+                /*PhotoPicker.builder()
+                        .setPhotoCount(1)
+                        .setShowCamera(true)
+                        .setShowGif(false)
+                        .setPreviewEnabled(true)
+                        .start(ActWeb.this, PhotoPicker.REQUEST_CODE);*/
+                Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+                if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
+                    // Create the File where the photo should go
+                    File photoFile;
+                    photoFile = createImageFile();
+                    takePictureIntent.putExtra("PhotoPath", mCameraPhotoPath);
+
+                    // Continue only if the File was successfully created
+                    if (photoFile != null) {
+                        mCameraPhotoPath = "file:" + photoFile.getAbsolutePath();
+                        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
+                                Uri.fromFile(photoFile));
+                    } else {
+                    }
+                }
+
+                Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
+                contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
+                contentSelectionIntent.setType("image/*");
+
+                Intent[] intentArray;
+                takePictureIntent = null;//步调用相机
+                if (takePictureIntent != null) {
+                    intentArray = new Intent[]{takePictureIntent};
+                } else {
+                    intentArray = new Intent[0];
+                }
+
+                Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
+                chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
+                chooserIntent.putExtra(Intent.EXTRA_TITLE, "图片选择");
+                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
+
+                startActivityForResult(chooserIntent, INPUT_FILE_REQUEST_CODE);
+
+                return /*super.onShowFileChooser(webView, filePathCallback, fileChooserParams)*/true;
+            }
+
+            //For Android 4.1
+            public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
+                mUploadMessage = uploadMsg;
+                Intent i = new Intent(Intent.ACTION_GET_CONTENT);
+                i.addCategory(Intent.CATEGORY_OPENABLE);
+                i.setType("image/*");
+                ActWebX5.this.startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILECHOOSER_RESULTCODE);
+
+            }
+
+            @Override
+            public void onProgressChanged(WebView view, int newProgress) {
+                if (newProgress == 100) {
+                    String action = "javascript:imgsrc('" + url + "')";
+                    runWebviewUrl(action);
+                }
+                super.onProgressChanged(view, newProgress);
+            }
+        });
+        mWebView.setWebViewClient(new WebViewClient() {
+            @Override
+            public boolean shouldOverrideUrlLoading(WebView view, String url) {
+                LogUtil.println("ActWeb", "shouldOverrideUrlLoading", url);
+                //微信H5支付核心代码
+                if (url.startsWith("weixin://wap/pay?")) {
+                    try {
+                        Intent intent = new Intent();
+                        intent.setAction(Intent.ACTION_VIEW);
+                        intent.setData(Uri.parse(url));
+                        startActivity(intent);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    return true;
+                } else if (url.startsWith("alipays:") || url.startsWith("alipay")) {
+                    try {
+                        startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));
+                    } catch (Exception e) {
+                        new AlertDialog.Builder(ActWebX5.this)
+                                .setMessage("未检测到支付宝客户端,请安装后重试。")
+                                .setPositiveButton("立即安装", new DialogInterface.OnClickListener() {
+
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        Uri alipayUrl = Uri.parse("https://d.alipay.com");
+                                        startActivity(new Intent("android.intent.action.VIEW", alipayUrl));
+                                    }
+                                }).setNegativeButton("取消", null).show();
+                    }
+                    return true;
+                } else if (url.contains("17xmy.com")) {
+                    Map<String, String> extraHeaders = new HashMap<>();
+                    extraHeaders.put("Referer", "http://17xmy.com");
+                    view.loadUrl(url, extraHeaders);
+                    return true;
+                } else if (url.contains("kfzs.com") || (url.startsWith("http://10.8.") && TestUtil.isDev())) {
+                    Map<String, String> extraHeaders = new HashMap<>();
+                    extraHeaders.put("Referer", "http://kfzs.com");
+                    view.loadUrl(url, extraHeaders);
+                    return true;
+                } else {
+                    return false;
+                }
+            }
+
+            @Override
+            public void onPageStarted(WebView view, String url, Bitmap favicon) {
+                LogUtil.println("ActWeb", "onPageStarted", url);
+                super.onPageStarted(view, url, favicon);
+            }
+
+            @Override
+            public void onPageFinished(WebView view, String url) {
+                LogUtil.println("ActWeb", "onPageFinished", url);
+                super.onPageFinished(view, url);
+                imgReset();
+            }
+        });
+        webViewSettings.setJavaScriptEnabled(true);
+        mWebView.addJavascriptInterface(new KFZSJs(), "kfzsjs");
+        String loadUrl = addUrlToken(url);
+        LogUtil.println("ActWeb loadUrl = " + loadUrl);
+        if (CommonUtil.getInstance().judgeUrlPicture(url)) {
+            runWebviewUrl("file:///android_asset/loadImg.html");
+        } else {
+            mWebView.loadUrl(loadUrl);
+        }
+    }
+
+    //在sdcard卡创建缩略图
+    //createImageFileInSdcard
+    @SuppressLint("SdCardPath")
+    private File createImageFile() {
+        //mCameraPhotoPath="/mnt/sdcard/tmp.png";
+        File file = new File(Environment.getExternalStorageDirectory() + "/", "tmp.png");
+        mCameraPhotoPath = file.getAbsolutePath();
+        if (!file.exists()) {
+            try {
+                file.createNewFile();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return file;
+    }
+
+    public static String addUrlToken(String url) {
+        return addUrl(url, "authorization", SpUtils.getToken(SheepApp.getInstance()));
+    }
+
+    public static String addUrl(String url, String key, String value) {
+        return url + ((url.contains("?") || url.contains("#") && url.contains("=")) ? "&" : "?") + key + "=" + value;
+    }
+
+    /**
+     * window.kfzsjs.方法名(参数)
+     */
+    public class KFZSJs {
+        @JavascriptInterface
+        public void setTitle(final String title) {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    TitleBarUtils
+                            .getInstance()
+                            .setTitle(ActWebX5.this, title);
+                }
+            });
+        }
+
+        /**
+         * 是否响应返回键
+         */
+        @JavascriptInterface
+        public boolean isResponseBack() {
+            return responseBack;
+        }
+
+        /**
+         * 设置是否响应返回键
+         */
+        @JavascriptInterface
+        public void setResponseBack(boolean responseBack) {
+            ActWebX5.this.responseBack = responseBack;
+        }
+
+        @JavascriptInterface
+        public void downloadFile(final String url, final String name) {
+            CommonUtil.getInstance().showDownLoad(ActWebX5.this, url, name);
+        }
+
+        @JavascriptInterface
+        public void startApp(String pkg, String cls) {
+            PackageUtil.startApp(ActWebX5.this, pkg);
+        }
+
+        @JavascriptInterface
+        public void gotoLogin() {
+            mWebView = null;
+            Jump2View.getInstance().gotoLoginAgain();
+        }
+
+        @JavascriptInterface
+        public void gotoWeb(String url, String title) {
+            if (!TextUtils.isEmpty(url)) {
+                if (TextUtils.isEmpty(title)) {
+                    Jump2View.getInstance().goWeb(ActWebX5.this, url);//启动浏览器h5
+                } else {
+                    Jump2View.getInstance().goWeb(ActWebX5.this, url, title);//进入小绵羊h5界面
+                }
+            }
+        }
+
+        @JavascriptInterface
+        public void gotoRecharge() {
+            Jump2View.getInstance().goRechargeAct(ActWebX5.this, "内部H5");//进入充值绵羊币界面
+        }
+
+        @JavascriptInterface
+        public String getInvitationCode() {
+            return DataUtil.getInstance().getInvitationCode();
+        }
+
+        @JavascriptInterface
+        public String popShare(String url, String type) {
+            CommonUtil.getInstance().popShare(ActWebX5.this, url, type);
+            return "";
+        }
+
+        @JavascriptInterface
+        public String getHeader() {
+            return SpUtils.getToken(ActWebX5.this);
+        }
+
+        @JavascriptInterface
+        public String getWcUrl(String url) {
+            if (!TextUtils.isEmpty(url)) {
+                Jump2View.getInstance().goWeb(ActWebX5.this, url);
+            }
+            return "";
+        }
+
+        @JavascriptInterface
+        public void showTitleBar(final boolean isShow) {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    if (layout_navigationBar != null)
+                        layout_navigationBar.setVisibility(isShow ? View.VISIBLE : View.GONE);
+                }
+            });
+        }
+
+        @JavascriptInterface
+        public void goBack() {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    finish();
+                }
+            });
+        }
+
+        @JavascriptInterface
+        public void finishAct() {
+            runOnUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    ActWebX5.super.finish();
+                }
+            });
+        }
+
+        @JavascriptInterface
+        public void skip2QQ() {
+            ApiUtil.getNewAboutUsComplainQq(new Action1<String>() {
+                @Override
+                public void call(String qq) {
+                    QQUtil.skip3(ActWebX5.this, qq);
+                }
+            });
+        }
+
+    }
+
+    /**
+     * 是否响应返回键
+     */
+    private boolean responseBack = true;
+
+    @Override
+    public void onBackPressed() {
+        if (responseBack)
+            super.onBackPressed();
+        else {
+            loadJs("onBackPressed()");
+        }
+    }
+
+    private void loadJs(String js) {
+        ViewUtil.loadJs(mWebView, js);
+    }
+
+    @Override
+    public void finish() {
+        if (mWebView != null && mWebView.canGoBack()) {
+            mWebView.goBack();
+            return;
+        }
+        super.finish();
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == FILECHOOSER_RESULTCODE) {
+            if (null == mUploadMessage) return;
+            Uri result = data == null || resultCode != RESULT_OK ? null
+                    : data.getData();
+            if (result != null) {
+                String imagePath = FileUtils.getPath(this, result);
+                if (!TextUtils.isEmpty(imagePath)) {
+                    result = Uri.parse("file:///" + imagePath);
+                }
+            }
+            mUploadMessage.onReceiveValue(result);
+            mUploadMessage = null;
+        } else if (requestCode == INPUT_FILE_REQUEST_CODE && mFilePathCallback != null) {
+            // 5.0的回调
+            Uri[] results = null;
+
+            // Check that the response is a good one
+            if (resultCode == Activity.RESULT_OK) {
+                if (data == null) {
+                    // If there is not data, then we may have taken a photo
+                    if (mCameraPhotoPath != null) {
+                        results = new Uri[]{Uri.parse(mCameraPhotoPath)};
+                    }
+                } else {
+                    String dataString = data.getDataString();
+                    if (dataString != null) {
+                        results = new Uri[]{Uri.parse(dataString)};
+                    }
+                }
+            }
+
+            mFilePathCallback.onReceiveValue(results);
+            mFilePathCallback = null;
+        } else {
+            super.onActivityResult(requestCode, resultCode, data);
+            return;
+        }
+    }
+
+    private void imgReset() {
+        if (mWebView != null)
+            mWebView.loadUrl("javascript:(function(){" +
+                    "var objs = document.getElementsByTagName('img'); " +
+                    "for(var i=0;i<objs.length;i++)  " +
+                    "{"
+                    + "var img = objs[i];   " +
+                    " img.style.maxWidth = '100%';" +
+                    "}" +
+                    "})()");
+    }
+
+    private void runWebviewUrl(final String url) {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                if (mWebView != null && !TextUtils.isEmpty(url)) {
+                    mWebView.loadUrl(url);
+                }
+            }
+        });
+    }
+
+}

+ 4 - 3
app/src/main/java/com/sheep/gamegroup/view/adapter/TitleFragmentListAdapter.java

@@ -1,6 +1,7 @@
 package com.sheep.gamegroup.view.adapter;
 package com.sheep.gamegroup.view.adapter;
 
 
 import android.os.Parcelable;
 import android.os.Parcelable;
+import android.support.annotation.NonNull;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.app.FragmentPagerAdapter;
@@ -14,7 +15,7 @@ import java.util.List;
  */
  */
 
 
 public class TitleFragmentListAdapter extends FragmentPagerAdapter {
 public class TitleFragmentListAdapter extends FragmentPagerAdapter {
-    private List<Object> mListFragment = new ArrayList<>();
+    private List<Fragment> mListFragment = new ArrayList<>();
     private List<Object> mTitles = new ArrayList<>();
     private List<Object> mTitles = new ArrayList<>();
 
 
     public TitleFragmentListAdapter(FragmentManager fragmentManager) {
     public TitleFragmentListAdapter(FragmentManager fragmentManager) {
@@ -37,7 +38,7 @@ public class TitleFragmentListAdapter extends FragmentPagerAdapter {
 
 
     @Override
     @Override
     public Fragment getItem(int position) {
     public Fragment getItem(int position) {
-        return (Fragment) mListFragment.get(position);
+        return mListFragment.get(position);
     }
     }
 
 
     @Override
     @Override
@@ -46,7 +47,7 @@ public class TitleFragmentListAdapter extends FragmentPagerAdapter {
     }
     }
 
 
     @Override
     @Override
-    public int getItemPosition(Object object) {
+    public int getItemPosition(@NonNull Object object) {
         return super.getItemPosition(object);
         return super.getItemPosition(object);
     }
     }
 
 

+ 112 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtGameFocusList.java

@@ -0,0 +1,112 @@
+package com.sheep.gamegroup.view.fragment;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.sheep.gamegroup.model.api.ApiService;
+import com.sheep.gamegroup.model.entity.Applications;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.UserFocusGame;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.ActivityManager;
+import com.sheep.gamegroup.util.ApiUtil;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.ViewHolder;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
+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 io.reactivex.Observable;
+
+/**
+ * Created by realicing on 2018/11/22.
+ * realicing@sina.com
+ * 小绵羊3.4.5新界面--我的关注--游戏列表子模块
+ */
+public class FgtGameFocusList extends BaseListFragment2<UserFocusGame>{
+    @Override
+    protected RecyclerView.Adapter getAdapter() {
+        return new AdbCommonRecycler<UserFocusGame>(SheepApp.getInstance(), list) {
+            @Override
+            public int getViewIdByType(int type) {
+                return R.layout.item_my_focus;
+            }
+
+            @Override
+            public void convert(ViewHolder holder, final UserFocusGame  item) {
+                ImageView item_my_focus_iv = holder.itemView.findViewById(R.id.item_my_focus_iv);
+                TextView item_my_focus_info_tv = holder.itemView.findViewById(R.id.item_my_focus_info_tv);
+                TextView item_my_focus_tv = holder.itemView.findViewById(R.id.item_my_focus_tv);
+                final Applications applications = item.getApplications();
+                if(applications == null || applications.getId() <= 0) {
+                    ViewUtil.setImage(item_my_focus_iv, "");
+                    ViewUtil.setDefaultText(item_my_focus_info_tv);
+                    ViewUtil.setDefaultText(item_my_focus_tv);
+                    ViewUtil.setEnabled(item_my_focus_tv, false);
+                } else {
+                    ViewUtil.setImage(item_my_focus_iv, applications.getIcon());
+                    ViewUtil.setText(item_my_focus_info_tv, applications.getName());
+                    if(item.getFocus_game_id() > 0){
+                        ViewUtil.setText(item_my_focus_tv, "已关注");
+                        item_my_focus_tv.setBackgroundResource(R.drawable.selector_button_stroke_main);
+                        item_my_focus_tv.setTextColor(getResources().getColorStateList(R.color.selector_color_stoke_main_btn));
+                    } else {
+                        ViewUtil.setText(item_my_focus_tv, "关注");
+                        item_my_focus_tv.setBackgroundResource(R.drawable.selector_btn_stroke_333);
+                        item_my_focus_tv.setTextColor(getResources().getColorStateList(R.color.selector_color_stoke_333));
+                    }
+                    ViewUtil.setEnabled(item_my_focus_tv, true);
+                    item_my_focus_tv.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(final View view) {
+                            final boolean isFocusGame = item.getFocus_game_id() > 0;
+                            view.setEnabled(false);
+                            ApiUtil.postGameUserFocusGame(applications.getId(), new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+                                @Override
+                                public void onNext(BaseMessage baseMessage) {
+                                    G.showToast(isFocusGame ? R.string.cancel_focus_success : R.string.focus_success);
+                                    item.setFocus_game_id(isFocusGame ? 0 : applications.getId());
+                                    view.setEnabled(true);
+                                }
+
+                                @Override
+                                public void onError(BaseMessage baseMessage) {
+                                    G.showToast(isFocusGame ? R.string.cancel_focus_fail : R.string.focus_fail);
+                                    view.setEnabled(true);
+                                }
+                            });
+                        }
+                    });
+                    holder.itemView.setOnClickListener(new View.OnClickListener() {
+                        @Override
+                        public void onClick(View view) {
+                            Jump2View.getInstance().goPlayGameDetail(ActivityManager.getInstance().currentActivity(), applications.getId());
+                        }
+                    });
+
+                }
+            }
+        };
+    }
+
+    @Override
+    protected String getKey(int page, int per_page) {
+        return ApiKey.pageKeyUrl(ApiKey.getGameUserGameFocusList, page, per_page);
+    }
+
+    @Override
+    protected Observable<BaseMessage> getApi(ApiService apiService) {
+        return apiService.getGameUserGameFocusList(page, per_page);
+    }
+
+    @Override
+    protected Class<UserFocusGame> getTClass() {
+        return UserFocusGame.class;
+    }
+}

+ 113 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtUserFocusLogList.java

@@ -0,0 +1,113 @@
+package com.sheep.gamegroup.view.fragment;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.sheep.gamegroup.model.api.ApiService;
+import com.sheep.gamegroup.model.entity.Applications;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.UserFocusLog;
+import com.sheep.gamegroup.model.entity.UserFocusLog;
+import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.util.ActivityManager;
+import com.sheep.gamegroup.util.ApiUtil;
+import com.sheep.gamegroup.util.Jump2View;
+import com.sheep.gamegroup.util.ViewHolder;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.gamegroup.view.adapter.AdbCommonRecycler;
+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 io.reactivex.Observable;
+
+/**
+ * Created by realicing on 2018/11/22.
+ * realicing@sina.com
+ * 小绵羊3.4.5新界面--我的关注--人员列表子模块
+ */
+public class FgtUserFocusLogList extends BaseListFragment2<UserFocusLog>{
+    @Override
+    protected RecyclerView.Adapter getAdapter() {
+        return new AdbCommonRecycler<UserFocusLog>(SheepApp.getInstance(), list) {
+            @Override
+            public int getViewIdByType(int type) {
+                return R.layout.item_my_focus;
+            }
+
+            @Override
+            public void convert(ViewHolder holder, final UserFocusLog  item) {
+                ImageView item_my_focus_iv = holder.itemView.findViewById(R.id.item_my_focus_iv);
+                TextView item_my_focus_info_tv = holder.itemView.findViewById(R.id.item_my_focus_info_tv);
+                TextView item_my_focus_tv = holder.itemView.findViewById(R.id.item_my_focus_tv);
+//                final Applications applications = item.getApplications();
+//                if(applications == null || applications.getId() <= 0) {
+//                    ViewUtil.setImage(item_my_focus_iv, "");
+//                    ViewUtil.setDefaultText(item_my_focus_info_tv);
+//                    ViewUtil.setDefaultText(item_my_focus_tv);
+//                    ViewUtil.setEnabled(item_my_focus_tv, false);
+//                } else {
+//                    ViewUtil.setImage(item_my_focus_iv, applications.getIcon());
+//                    ViewUtil.setText(item_my_focus_info_tv, applications.getName());
+//                    if(item.getFocus_game_id() > 0){
+//                        ViewUtil.setText(item_my_focus_tv, "已关注");
+//                        item_my_focus_tv.setBackgroundResource(R.drawable.selector_button_stroke_main);
+//                        item_my_focus_tv.setTextColor(getResources().getColorStateList(R.color.selector_color_stoke_main_btn));
+//                    } else {
+//                        ViewUtil.setText(item_my_focus_tv, "关注");
+//                        item_my_focus_tv.setBackgroundResource(R.drawable.selector_btn_stroke_333);
+//                        item_my_focus_tv.setTextColor(getResources().getColorStateList(R.color.selector_color_stoke_333));
+//                    }
+//                    ViewUtil.setEnabled(item_my_focus_tv, true);
+//                    item_my_focus_tv.setOnClickListener(new View.OnClickListener() {
+//                        @Override
+//                        public void onClick(final View view) {
+//                            final boolean isFocusGame = item.getFocus_game_id() > 0;
+//                            view.setEnabled(false);
+//                            ApiUtil.postGameUserFocusLog(applications.getId(), new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
+//                                @Override
+//                                public void onNext(BaseMessage baseMessage) {
+//                                    G.showToast(isFocusGame ? R.string.cancel_focus_success : R.string.focus_success);
+//                                    item.setFocus_game_id(isFocusGame ? 0 : applications.getId());
+//                                    view.setEnabled(true);
+//                                }
+//
+//                                @Override
+//                                public void onError(BaseMessage baseMessage) {
+//                                    G.showToast(isFocusGame ? R.string.cancel_focus_fail : R.string.focus_fail);
+//                                    view.setEnabled(true);
+//                                }
+//                            });
+//                        }
+//                    });
+//                    holder.itemView.setOnClickListener(new View.OnClickListener() {
+//                        @Override
+//                        public void onClick(View view) {
+//                            Jump2View.getInstance().goPlayGameDetail(ActivityManager.getInstance().currentActivity(), applications.getId());
+//                        }
+//                    });
+//
+//                }
+            }
+        };
+    }
+
+    @Override
+    protected String getKey(int page, int per_page) {
+        return ApiKey.pageKeyUrl(ApiKey.getGameUserGameFocusList, page, per_page);
+    }
+
+    @Override
+    protected Observable<BaseMessage> getApi(ApiService apiService) {
+        return apiService.getGameUserGameFocusList(page, per_page);
+    }
+
+    @Override
+    protected Class<UserFocusLog> getTClass() {
+        return UserFocusLog.class;
+    }
+}

+ 9 - 0
app/src/main/java/org/afinal/simplecache/ApiKey.java

@@ -50,6 +50,15 @@ public class ApiKey {
     public static final String novice_guidance = "app/user/novice_guidance";
     public static final String novice_guidance = "app/user/novice_guidance";
     //用户中心模块
     //用户中心模块
     public static final String user_module = "app/user_module";
     public static final String user_module = "app/user_module";
+    //热门用户列表
+    public static final String getGameUserUserFocusHotUser = "app/game_user/user_focus/hot_user";
+    //关注的用户列表
+    public static final String getGameUserUserFocusList = "app/game_user/user_focus/list";
+    //关注的游戏列表
+    public static final String getGameUserGameFocusList = "app/game_user/game_focus/list";
+    public static final String pageKeyUrl(String baseUrl, int page, int per_page){
+        return String.format(Locale.CHINA, "%s?page=%d&per_page=%d", baseUrl, page, per_page);
+    }
 
 
     public static String release_task(int page, int per_page, int about_to_begin, String task_type, int is_succession) {
     public static String release_task(int page, int per_page, int about_to_begin, String task_type, int is_succession) {
         task_type = task_type.replaceAll(",", "%2C");
         task_type = task_type.replaceAll(",", "%2C");

+ 11 - 0
app/src/main/res/color/selector_color_stoke_333.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:state_enabled="false" android:color="@color/white" />
+    <item android:state_activated="true" android:color="@color/main_tab_activated" />
+    <item android:state_focused="true" android:color="@color/main_tab_activated" />
+    <item android:state_checked="true" android:color="@color/main_tab_activated"/>
+    <item android:state_selected="true" android:color="@color/main_tab_activated"/>
+    <item android:state_pressed="true" android:color="@color/main_tab_activated"/>
+    <item android:color="@color/black_6_3"/>
+</selector>

+ 9 - 0
app/src/main/res/drawable/selector_btn_stroke_333.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" >
+  <item android:state_enabled="false" android:drawable="@drawable/button_full_normal_gray" />
+  <item android:state_focused="true" android:drawable="@drawable/btn_main_stroke_click" />
+  <item android:state_checked="true" android:drawable="@drawable/btn_main_stroke_click"/>
+  <item android:state_selected="true" android:drawable="@drawable/btn_main_stroke_click"/>
+  <item android:state_pressed="true" android:drawable="@drawable/btn_main_stroke_click"/>
+  <item android:drawable="@drawable/shape_btn_stroke_333"/>
+</selector>

+ 8 - 0
app/src/main/res/drawable/shape_btn_stroke_333.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="@dimen/radius_25" />
+    <stroke
+        android:width="1dp"
+        android:color="@color/black_6_3" />
+</shape>

+ 1 - 1
app/src/main/res/layout/act_web.xml

@@ -7,7 +7,7 @@
 
 
     <include
     <include
         layout="@layout/title"/>
         layout="@layout/title"/>
-    <com.tencent.smtt.sdk.WebView
+    <WebView
         android:id="@+id/webview"
         android:id="@+id/webview"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_height="0dp"

+ 17 - 0
app/src/main/res/layout/act_web_x5.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/white_F9F9F9">
+
+    <include
+        layout="@layout/title"/>
+    <com.tencent.smtt.sdk.WebView
+        android:id="@+id/webview"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:scrollbars="none"
+        android:background="@drawable/x_shap_shadow_bg_rectgangle_white"/>
+</LinearLayout>

+ 46 - 0
app/src/main/res/layout/item_my_focus.xml

@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <ImageView
+        android:id="@+id/item_my_focus_iv"
+        android:layout_width="88dp"
+        android:layout_height="92dp"
+        android:paddingStart="16dp"
+        android:paddingTop="15dp"
+        android:paddingEnd="10dp"
+        android:paddingBottom="15dp"
+        android:scaleType="centerCrop"
+        android:src="@drawable/loading_01" />
+
+    <TextView
+        android:id="@+id/item_my_focus_info_tv"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="5dp"
+        android:text="昵称"
+        android:textColor="#ff333333"
+        android:textSize="16sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@id/item_my_focus_tv"
+        app:layout_constraintStart_toEndOf="@id/item_my_focus_iv"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/item_my_focus_tv"
+        android:layout_width="80dp"
+        android:layout_height="30dp"
+        android:gravity="center"
+        android:background="@drawable/selector_button_stroke_main"
+        android:textColor="@color/selector_color_stoke_main_btn"
+        android:text="已关注"
+        android:textSize="13sp"
+        android:layout_marginEnd="16dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@id/item_my_focus_info_tv"
+        app:layout_constraintTop_toTopOf="parent" />
+
+</android.support.constraint.ConstraintLayout>