Procházet zdrojové kódy

搜索可以随着banner一起滑动;
调整主页搜索框界面向美工看齐;
搜索历史排序修正;
新手引导先显示一张图片;
个人中心模块尝试显示tag

zengjiebin před 7 roky
rodič
revize
4cd49fa61a
25 změnil soubory, kde provedl 594 přidání a 66 odebrání
  1. 2 0
      app/src/main/AndroidManifest.xml
  2. 10 0
      app/src/main/java/com/sheep/gamegroup/absBase/IContentTypeContainer.java
  3. 9 0
      app/src/main/java/com/sheep/gamegroup/absBase/ITag.java
  4. 1 1
      app/src/main/java/com/sheep/gamegroup/greendao/DDProviderHelper.java
  5. 5 0
      app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java
  6. 2 1
      app/src/main/java/com/sheep/gamegroup/model/entity/HomeListEntity.java
  7. 124 0
      app/src/main/java/com/sheep/gamegroup/model/entity/NoviceGuidance.java
  8. 12 8
      app/src/main/java/com/sheep/gamegroup/util/Jump2View.java
  9. 23 0
      app/src/main/java/com/sheep/gamegroup/util/StringUtils.java
  10. 4 1
      app/src/main/java/com/sheep/gamegroup/util/TestUtil.java
  11. 86 11
      app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java
  12. 0 1
      app/src/main/java/com/sheep/gamegroup/view/activity/ActSearchAppOrTask.java
  13. 18 0
      app/src/main/java/com/sheep/gamegroup/view/activity/ActUserNoviceGuidance.java
  14. 1 5
      app/src/main/java/com/sheep/gamegroup/view/adapter/AdpHomeListGrideview.java
  15. 83 0
      app/src/main/java/com/sheep/gamegroup/view/adapter/AdpNoviceGuidance.java
  16. 2 1
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPersonalCenter.java
  17. 1 1
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtSmallSheep.java
  18. 98 0
      app/src/main/java/com/sheep/gamegroup/view/fragment/FgtUserNoviceGuidance.java
  19. 2 1
      app/src/main/java/com/sheep/jiuyan/samllsheep/bean/UserCenterModule.java
  20. 2 0
      app/src/main/java/org/afinal/simplecache/ApiKey.java
  21. 4 3
      app/src/main/res/drawable/shape_main_search_bar_radius.xml
  22. 36 30
      app/src/main/res/layout/homepage_act_layout.xml
  23. 68 0
      app/src/main/res/layout/item_novice_guidance.xml
  24. 1 1
      app/src/main/res/values/strings.xml
  25. 0 1
      view/src/main/res/values/dimens.xml

+ 2 - 0
app/src/main/AndroidManifest.xml

@@ -421,6 +421,8 @@
         <activity
             android:name="com.sheep.gamegroup.view.activity.SignRechargeAct"
             android:screenOrientation="portrait" />
+        <activity android:name="com.sheep.gamegroup.view.activity.ActUserNoviceGuidance"
+            android:screenOrientation="portrait" />
         <activity
             android:name="com.sheep.gamegroup.view.activity.ActXiaomiGame"
             android:screenOrientation="portrait" />

+ 10 - 0
app/src/main/java/com/sheep/gamegroup/absBase/IContentTypeContainer.java

@@ -0,0 +1,10 @@
+package com.sheep.gamegroup.absBase;
+
+/**
+ * Created by realicing on 2018/11/9.
+ * realicing@sina.com
+ */
+public interface IContentTypeContainer<T,C> {
+    T getContentType();
+    C getContentResult();
+}

+ 9 - 0
app/src/main/java/com/sheep/gamegroup/absBase/ITag.java

@@ -0,0 +1,9 @@
+package com.sheep.gamegroup.absBase;
+
+/**
+ * Created by realicing on 2018/11/9.
+ * realicing@sina.com
+ */
+public interface ITag {
+    int getTag();
+}

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/greendao/DDProviderHelper.java

@@ -596,7 +596,7 @@ public class DDProviderHelper {
                 .getSearchRecordDao()
                 .queryBuilder()
                 .limit(limit)
-                .orderAsc(SearchRecordDao.Properties.Count)
+                .orderDesc(SearchRecordDao.Properties.Count)
                 .build()
                 .list();
     }

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

@@ -1303,6 +1303,11 @@ public interface ApiService {
     @GET("app/user_module")
     Observable<BaseMessage> userModule();
 
+    /**
+     * 新手引导
+     */
+    @GET(ApiKey.novice_guidance)
+    Observable<BaseMessage> getNoviceGuidance();
 
 //---------------------------end 个人中心-------------------------------------
 //---------------------------start 搜索相关-------------------------------------

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/model/entity/HomeListEntity.java

@@ -3,13 +3,14 @@ package com.sheep.gamegroup.model.entity;
 import android.text.TextUtils;
 
 import com.sheep.gamegroup.absBase.IJump;
+import com.sheep.gamegroup.absBase.ITag;
 
 /**
  * 首页list
  * Created by ljy on 2018/5/10.
  */
 
-public class HomeListEntity implements IJump {
+public class HomeListEntity implements IJump, ITag {
     private String CreateTime;//	integer ($int64)创建时间,时间戳
     private String Desc;//	string描述
     private String Icon;//	string图标地址

+ 124 - 0
app/src/main/java/com/sheep/gamegroup/model/entity/NoviceGuidance.java

@@ -0,0 +1,124 @@
+package com.sheep.gamegroup.model.entity;
+
+import android.text.TextUtils;
+
+import com.lqr.emoji.EmotionLayout;
+import com.sheep.gamegroup.absBase.IContentTypeContainer;
+import com.sheep.gamegroup.util.StringUtils;
+
+/**
+ * Created by realicing on 2018/11/9.
+ * realicing@sina.com
+ * 新手引导
+ * <p>
+ * content:	string
+ * 内容
+ * created_at:	integer ($int64)
+ * 创建时间
+ * id:	integer ($int64)
+ * ID
+ * platform:	integer ($int32)
+ * 平台(0全平台,1安卓,2苹果)
+ * title:	string
+ * 标题
+ * type:	integer ($int32)
+ * 类型(1文字,2视频)
+ * updated_at:	integer ($int64)
+ * 更新时间
+ * video_url:	string
+ * 视频地址
+ */
+public class NoviceGuidance implements IContentTypeContainer<Integer, String> {
+    private String content;
+
+    private int created_at;
+
+    private int id;
+
+    private int platform;
+
+    private String title;
+
+    private int type;
+
+    private int updated_at;
+
+    private String video_url;
+
+    public void setContent(String content){
+        this.content = content;
+        contentType = StringUtils.initContentType(content);
+    }
+
+    public String getContent(){
+        return this.content;
+    }
+    public void setCreated_at(int created_at){
+        this.created_at = created_at;
+    }
+    public int getCreated_at(){
+        return this.created_at;
+    }
+    public void setId(int id){
+        this.id = id;
+    }
+    public int getId(){
+        return this.id;
+    }
+    public void setPlatform(int platform){
+        this.platform = platform;
+    }
+    public int getPlatform(){
+        return this.platform;
+    }
+    public void setTitle(String title){
+        this.title = title;
+    }
+    public String getTitle(){
+        return this.title;
+    }
+    public void setType(int type){
+        this.type = type;
+    }
+    public int getType(){
+        return this.type;
+    }
+    public void setUpdated_at(int updated_at){
+        this.updated_at = updated_at;
+    }
+    public int getUpdated_at(){
+        return this.updated_at;
+    }
+    public void setVideo_url(String video_url){
+        this.video_url = video_url;
+    }
+    public String getVideo_url(){
+        return this.video_url;
+    }
+
+//    //默认类型,服务器数据无此类型,只作为客户端自己直接添加使用,只包含内容
+//    public static final int TYPE_MSG = 0;
+//    //标题与文本
+//    public static final int TYPE_CONTENT = 1;
+//    //标题与文本与视频
+//    public static final int TYPE_VIDEO = 2;
+
+    //content的类型
+    private int contentType;
+
+    public Integer getContentType() {
+        return contentType;
+    }
+
+    private String contentResult;
+    @Override
+    public String getContentResult() {
+        switch (contentType){
+            case StringUtils.CONTENT_TYPE_EXP:
+                if(contentResult == null)
+                    contentResult = EmotionLayout.changeContent(content);
+                return contentResult;
+        }
+        return content;
+    }
+}

+ 12 - 8
app/src/main/java/com/sheep/gamegroup/util/Jump2View.java

@@ -17,6 +17,7 @@ import com.sheep.gamegroup.absBase.IHomePageSearch;
 import com.sheep.gamegroup.greendao.download.DownLoadInfo;
 import com.sheep.gamegroup.model.entity.Advertising;
 import com.sheep.gamegroup.model.entity.Agreement;
+import com.sheep.gamegroup.model.entity.Applications;
 import com.sheep.gamegroup.model.entity.Article;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.CheckUserLabel;
@@ -25,10 +26,8 @@ import com.sheep.gamegroup.model.entity.Container;
 import com.sheep.gamegroup.model.entity.CreditCard;
 import com.sheep.gamegroup.model.entity.DialogConfig;
 import com.sheep.gamegroup.model.entity.DialogEntity;
-import com.sheep.gamegroup.model.entity.Applications;
 import com.sheep.gamegroup.model.entity.GameListType;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
-import com.sheep.gamegroup.model.entity.HomePageSearch;
 import com.sheep.gamegroup.model.entity.LoginEntity;
 import com.sheep.gamegroup.model.entity.NewbieTask;
 import com.sheep.gamegroup.model.entity.NewbieTaskRecord;
@@ -36,12 +35,13 @@ import com.sheep.gamegroup.model.entity.RouserArticlesEntity;
 import com.sheep.gamegroup.model.entity.SystemNotification;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
 import com.sheep.gamegroup.model.entity.TaskEty;
-import com.sheep.gamegroup.model.entity.TopSearchStatistics;
 import com.sheep.gamegroup.model.entity.UserEntity;
 import com.sheep.gamegroup.model.entity.VersionInfo;
 import com.sheep.gamegroup.model.entity.WebviewEntity;
 import com.sheep.gamegroup.model.entity.XianWanEntity;
 import com.sheep.gamegroup.model.util.SheepSubscriber;
+import com.sheep.gamegroup.view.activity.ActArticle;
+import com.sheep.gamegroup.view.activity.ActArticleComment;
 import com.sheep.gamegroup.view.activity.ActAudit;
 import com.sheep.gamegroup.view.activity.ActBindMobileRegister;
 import com.sheep.gamegroup.view.activity.ActCommentGameApp;
@@ -49,8 +49,6 @@ import com.sheep.gamegroup.view.activity.ActCreditCardTaskList;
 import com.sheep.gamegroup.view.activity.ActCreditCardWeb;
 import com.sheep.gamegroup.view.activity.ActDownloadWelfareList;
 import com.sheep.gamegroup.view.activity.ActExchangeCMCC;
-import com.sheep.gamegroup.view.activity.ActArticle;
-import com.sheep.gamegroup.view.activity.ActArticleComment;
 import com.sheep.gamegroup.view.activity.ActGameAccount;
 import com.sheep.gamegroup.view.activity.ActGameAgencyRecharge;
 import com.sheep.gamegroup.view.activity.ActGameCenter;
@@ -86,6 +84,7 @@ import com.sheep.gamegroup.view.activity.ActUnderstandSheep;
 import com.sheep.gamegroup.view.activity.ActUserAppHome;
 import com.sheep.gamegroup.view.activity.ActUserCommentDetail;
 import com.sheep.gamegroup.view.activity.ActUserLabelList;
+import com.sheep.gamegroup.view.activity.ActUserNoviceGuidance;
 import com.sheep.gamegroup.view.activity.ActWeb;
 import com.sheep.gamegroup.view.activity.ActXiaomiGame;
 import com.sheep.gamegroup.view.activity.ActXinwanWeb;
@@ -130,7 +129,6 @@ import com.sheep.jiuyan.samllsheep.service.FloatShotScreenService;
 import com.sheep.jiuyan.samllsheep.service.ListenerShotNewService;
 import com.sheep.jiuyan.samllsheep.service.ListenerShotService;
 import com.sheep.jiuyan.samllsheep.ui.activity.SignActivity;
-import com.sheep.jiuyan.samllsheep.ui.activity.UserNavActivity;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.SpUtils;
 import com.youmi.android.offer.BaseActYmPermissionCheck;
@@ -1647,6 +1645,7 @@ public class Jump2View {
         Intent intent = new Intent(activity, ActReservation.class);
         activity.startActivity(intent);
     }
+
     //分享
     public void tryShare(final Activity activity, String shareUrlKey, final String idName, final int id, final String description) {
         try {
@@ -1661,6 +1660,7 @@ public class Jump2View {
             e.printStackTrace();
         }
     }
+
     //分享
     public void tryShare(final Activity activity, String shareUrlKey, final String idName, final int id) {
         try {
@@ -1702,6 +1702,7 @@ public class Jump2View {
         activity.startActivity(intent);
         SEARCH_APP_OR_TASK.onEvent();
     }
+
     /**
      * 新的游戏搜索
      */
@@ -2163,17 +2164,20 @@ public class Jump2View {
 
     /**
      * 签到 小绵羊
+     *
      * @param activity
      */
     public void goActSignSheep(Activity activity) {
         activity.startActivity(new Intent(activity, SignActivity.class));
     }
+
     /**
      * 新手引导图文或视频
+     *
      * @param activity
      */
     public void goActGuideNewUser(Activity activity) {
-        activity.startActivity(new Intent(activity, UserNavActivity.class));
+        activity.startActivity(new Intent(activity, ActUserNoviceGuidance.class));
     }
 
     /**
@@ -2181,7 +2185,7 @@ public class Jump2View {
      */
     public void goTaskOrAppDetail(IHomePageSearch item) {
         Activity activity = ActivityManager.getInstance().currentActivity();
-        switch (item.getLink_type()){
+        switch (item.getLink_type()) {
             case IHomePageSearch.LINK_TYPE_RELEASE_TASK:
                 goTaskDetailView(activity, item.getLink_id());
                 break;

+ 23 - 0
app/src/main/java/com/sheep/gamegroup/util/StringUtils.java

@@ -5,6 +5,7 @@ import android.content.ClipboardManager;
 import android.content.Context;
 import android.text.TextUtils;
 
+import com.lqr.emoji.EmotionLayout;
 import com.sheep.jiuyan.samllsheep.SheepApp;
 
 import org.json.JSONArray;
@@ -303,4 +304,26 @@ public class StringUtils {
         }
         return stringBuilder.toString();
     }
+
+
+    //默认类型,只包含文本
+    public static final int CONTENT_TYPE_FONT = 0;
+    //h5内容
+    public static final int CONTENT_TYPE_H5 = 1;
+    //包含小绵羊表情的内容
+    public static final int CONTENT_TYPE_EXP = 2;
+
+    public static int initContentType(String content) {
+        if(TextUtils.isEmpty(content)){
+            return CONTENT_TYPE_FONT;
+        }
+        boolean hasExp = EmotionLayout.hasExp(content);
+        if(hasExp){
+            return CONTENT_TYPE_EXP;
+        } else if(content.contains("<p>")){
+            return CONTENT_TYPE_H5;
+        } else {
+            return CONTENT_TYPE_FONT;
+        }
+    }
 }

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

@@ -225,7 +225,7 @@ public class TestUtil {
      */
     public static void test(final Activity activity) {
         final String[] items = {"复制token","复制打点数据","从jenkins下载小绵羊安装包","测试表情包",
-                "测试签名1","测试签名2",
+                "测试签名1","测试签名2","测试孔剑秋faq正式服",
                 "跳转QQ1","跳转QQ2","跳转QQ3","跳转白白QQ","龙猫竞猜","龙猫竞猜-scheme",
                 "有米科技测试","有米科技","手机型号测试","测试通知栏", "测试自定义通知栏","测试自定义通知栏2",
                 "开启通知栏权限0","开启通知栏权限1","开启通知栏权限2","开启通知栏权限3",
@@ -243,6 +243,9 @@ public class TestUtil {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         switch (items[which]) {
+                            case "测试孔剑秋faq正式服":
+                                Jump2View.getInstance().goWeb(activity, " http://10.8.210.236:8080/#/faq", items[which]);
+                                break;
                             case "测试签名1":
                                 LogUtil.println("测试签名", ApkUtils.getApkSignMd5StrByPackageName("com.realicing.android.upgrade.sheep", null));
                                 break;

+ 86 - 11
app/src/main/java/com/sheep/gamegroup/util/ViewUtil.java

@@ -18,6 +18,7 @@ import android.media.MediaPlayer;
 import android.net.Uri;
 import android.os.Build;
 import android.provider.MediaStore;
+import android.support.v4.app.ActivityOptionsCompat;
 import android.support.v4.app.FragmentActivity;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.GridLayoutManager;
@@ -53,6 +54,9 @@ import com.jcodecraeer.xrecyclerview.XRecyclerView;
 import com.kfzs.duanduan.utils.NumberFormatUtils;
 import com.mdad.sdk.mdsdk.common.AdData;
 import com.scwang.smartrefresh.layout.SmartRefreshLayout;
+import com.sheep.gamegroup.absBase.IContentContainer;
+import com.sheep.gamegroup.absBase.IContentTypeContainer;
+import com.sheep.gamegroup.absBase.ITag;
 import com.sheep.gamegroup.dateview.DatePickerDialog;
 import com.sheep.gamegroup.dateview.DateUtil;
 import com.sheep.gamegroup.model.entity.Advertising;
@@ -81,6 +85,7 @@ import com.sheep.gamegroup.view.fragment.FgtPersonalCenter;
 import com.sheep.jiuyan.samllsheep.BuildConfig;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.ui.activity.PlayVideoActivity;
 import com.sheep.jiuyan.samllsheep.utils.ClassFileHelper;
 import com.sheep.jiuyan.samllsheep.utils.G;
 import com.sheep.jiuyan.samllsheep.utils.PackageUtil;
@@ -218,7 +223,7 @@ public class ViewUtil {
 
     public static void refreshXrv(XRecyclerView view_list) {
         try {
-            if(view_list != null)
+            if (view_list != null)
                 view_list.refresh();
             /**
              * java.lang.NullPointerException: Attempt to invoke virtual method 'void com.jcodecraeer.xrecyclerview.ArrowRefreshHeader.setState(int)' on a null object reference
@@ -260,7 +265,7 @@ public class ViewUtil {
     /**
      * 抢任务弹框
      *
-     * @param mActivity  当前Activity,
+     * @param mActivity 当前Activity,
      */
     public void showRobDutyDialog(final Activity mActivity, RobTask robTask) {
         View view = LayoutInflater.from(mActivity).inflate(R.layout.dialog_game_or_task_or_gift, null, false);
@@ -337,6 +342,7 @@ public class ViewUtil {
     }
 
     public static final String BLOCK = "\u2588";//用特殊字符显示方块
+
     /**
      * 设置默认方块文本
      *
@@ -690,7 +696,7 @@ public class ViewUtil {
             @Override
             public void onClick(View v) {
                 QR_SAVE.onEvent();
-                try{
+                try {
                     File file = ViewUtil.saveImage((View) iv_qr.getParent(), ClassFileHelper.DIR, System.currentTimeMillis() + ".jpg");
                     if (file != null) {
                         Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
@@ -833,10 +839,11 @@ public class ViewUtil {
      * 获取一个 View 的缓存视图
      * 如果报错:Software rendering doesn't support hardware bitmaps
      * 在Glide 4.3上,hardware bitmaps(开启hardware bitmaps作用大概就是在使用ARGB_8888这种高质量的图片时,图片在内存中只会存在一份,反正就是一种节省内存的机制。) 配置默认是开启的,这也是Glide的一个Bug,高版本不知道修复了没有。
-     *
+     * <p>
      * 解决方案是在构建RequestOptions时,将该配置关掉。
-     *
+     * <p>
      * requestOptions.disallowHardwareConfig();
+     *
      * @param view
      * @return
      */
@@ -912,6 +919,7 @@ public class ViewUtil {
             textView.setMovementMethod(new ScrollingMovementMethod());
         }
     }
+
     public static void setH5ImgText(TextView textView, String content) {
         if (textView != null) {
             if (TextUtils.isEmpty(content)) {
@@ -994,13 +1002,13 @@ public class ViewUtil {
                 if (dialogConfig.getMsgIndent() > 0) {
                     msg = addIndent(msg, dialogConfig.getMsgIndent());
                 }
-                if(msg.startsWith("<p>")){//<p></p>这种格式的用dialog_msg.setText(Html.fromHtml(msg));方式显示,避免高度变化,影响用户体验
+                if (msg.startsWith("<p>")) {//<p></p>这种格式的用dialog_msg.setText(Html.fromHtml(msg));方式显示,避免高度变化,影响用户体验
                     dialog_msg.setText(Html.fromHtml(msg));
-                    if(msg.split("<p>").length > 1){
+                    if (msg.split("<p>").length > 1) {
                         ViewGroup.LayoutParams msgLayoutParams = dialog_msg.getLayoutParams();
-                        if(msgLayoutParams instanceof LinearLayout.LayoutParams){
+                        if (msgLayoutParams instanceof LinearLayout.LayoutParams) {
                             ((LinearLayout.LayoutParams) msgLayoutParams).bottomMargin *= -2;
-                        } else if(BuildConfig.DEBUG){
+                        } else if (BuildConfig.DEBUG) {
                             G.showToast("这里的bottomMargin显得多了,需要干掉");
                         }
                         dialog_msg.setLayoutParams(msgLayoutParams);
@@ -1430,6 +1438,7 @@ public class ViewUtil {
             GlideImageLoader.setAvatar(imageView, pictures);
         }
     }
+
     public static void setBlur(ImageView imageView, String pictures) {
         if (imageView != null && !TextUtils.isEmpty(pictures)) {
             if (pictures.contains(";")) {
@@ -1438,6 +1447,7 @@ public class ViewUtil {
             GlideImageLoader.setBlur(imageView, pictures);
         }
     }
+
     public static void setImage(ImageView imageView, String pictures) {
         if (imageView != null && !TextUtils.isEmpty(pictures)) {
             if (pictures.contains(";")) {
@@ -1455,6 +1465,7 @@ public class ViewUtil {
             GlideImageLoader.roundedCornersImage(imageView, pictures, radius);
         }
     }
+
     public static void setGameImage(ImageView imageView, String pictures) {
         if (imageView != null && !TextUtils.isEmpty(pictures)) {
             if (pictures.contains(";")) {
@@ -1490,16 +1501,78 @@ public class ViewUtil {
             textView.setText(TextUtils.isEmpty(msg) ? "" : msg);
         }
     }
+    public static void setText(TextView textView, IContentTypeContainer<Integer, String> contentTypeContainer) {
+        switch (contentTypeContainer.getContentType()){
+            case StringUtils.CONTENT_TYPE_FONT:
+                setText(textView, contentTypeContainer.getContentResult());
+                break;
+            case StringUtils.CONTENT_TYPE_H5:
+                setH5Text(textView, contentTypeContainer.getContentResult());
+                break;
+            case StringUtils.CONTENT_TYPE_EXP:
+                setH5ImgText(textView, contentTypeContainer.getContentResult());
+                break;
+        }
+    }
+
     public static void setText(TextView textView, int integer) {
         if (textView != null) {
             textView.setText(String.valueOf(integer));
         }
     }
+
     public static void setText(TextView textView, float f) {
         if (textView != null) {
             textView.setText(String.valueOf(f));
         }
     }
+
+    public static void setVideoAndFull(final VideoView videoView, View fullView, final View loading, String url) {
+        if (videoView == null || url == null) {
+            return;
+        }
+        final Activity activity = ActivityManager.getInstance().currentActivity();
+        videoView.setVideoURI(Uri.parse(url));
+        videoView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (videoView.isPlaying()) {
+                    videoView.pause();
+                } else if (!videoView.isPlaying()) {
+                    videoView.start();
+                }
+            }
+        });
+        videoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
+            @Override
+            public boolean onInfo(MediaPlayer mediaPlayer, int what, int extra) {
+                if(!mediaPlayer.isLooping())
+                    mediaPlayer.setLooping(true);
+                LogUtil.println("onInfo what = " + what + " extra = " + extra);
+                if(MediaPlayer.MEDIA_INFO_BUFFERING_START == what){
+                    if(loading != null)
+                        loading.setVisibility(View.GONE);
+//                        btnJoin.setVisibility(View.GONE);
+                }
+                return false;
+            }
+        });
+        Uri uri = Uri.parse(url);
+        videoView.setVideoURI(uri);
+        videoView.start();
+        videoView.requestFocus();
+        if (fullView == null) {
+            return;
+        }
+        fullView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                activity.startActivity(new Intent(activity, PlayVideoActivity.class),
+                        ActivityOptionsCompat.makeSceneTransitionAnimation(activity, videoView, "video").toBundle());
+            }
+        });
+    }
+
     public static void setTextRetainMost2(TextView textView, float f) {
         if (textView != null) {
             textView.setText(NumberFormatUtils.retainMost2(f));
@@ -1511,6 +1584,7 @@ public class ViewUtil {
             view.setVisibility(isVisible ? View.VISIBLE : View.GONE);
         }
     }
+
     public static void setVisibility2(View view, boolean isVisible) {
         if (view != null) {
             view.setVisibility(isVisible ? View.VISIBLE : View.INVISIBLE);
@@ -1692,12 +1766,13 @@ public class ViewUtil {
      * 标签类型(0无,1热门,2最新,3现金,4活跃,5福利,6红包)
      * homepage item statues
      */
-    public void showGridviewStatues(Context context, TextView textView, HomeListEntity entity) {
+    public static void updateTag(TextView textView, ITag tag) {
+        Context context = SheepApp.getInstance();
         textView.setVisibility(View.INVISIBLE);
 
         int padding1 = textView.getContext().getResources().getDimensionPixelSize(R.dimen.content_padding_1);
         int padding2 = textView.getContext().getResources().getDimensionPixelSize(R.dimen.content_padding_2);
-        switch (entity.getTag()) {
+        switch (tag.getTag()) {
             default:
 
                 break;

+ 0 - 1
app/src/main/java/com/sheep/gamegroup/view/activity/ActSearchAppOrTask.java

@@ -21,7 +21,6 @@ import com.sheep.gamegroup.absBase.ISearch;
 import com.sheep.gamegroup.absBase.ISearchRecord;
 import com.sheep.gamegroup.greendao.DDProviderHelper;
 import com.sheep.gamegroup.greendao.download.SearchRecord;
-import com.sheep.gamegroup.model.entity.Applications;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.TitleInfoList;
 import com.sheep.gamegroup.model.entity.TopSearchStatistics;

+ 18 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/ActUserNoviceGuidance.java

@@ -0,0 +1,18 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.support.v4.app.Fragment;
+
+import com.sheep.gamegroup.absBase.BaseContainerActivity;
+import com.sheep.gamegroup.view.fragment.FgtUserNoviceGuidance;
+
+/**
+ * Created by realicing on 2018/11/9.
+ * realicing@sina.com
+ * 新手引导
+ */
+public class ActUserNoviceGuidance extends BaseContainerActivity {
+    @Override
+    protected Fragment initFragment() {
+        return new FgtUserNoviceGuidance();
+    }
+}

+ 1 - 5
app/src/main/java/com/sheep/gamegroup/view/adapter/AdpHomeListGrideview.java

@@ -1,11 +1,9 @@
 package com.sheep.gamegroup.view.adapter;
 
 import android.content.Context;
-import android.graphics.drawable.Drawable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.AbsListView;
 import android.widget.BaseAdapter;
 import android.widget.ImageView;
 import android.widget.TextView;
@@ -13,8 +11,6 @@ import android.widget.TextView;
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.request.RequestOptions;
 import com.sheep.gamegroup.model.entity.HomeListEntity;
-import com.sheep.gamegroup.util.CommonUtil;
-import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.jiuyan.samllsheep.R;
 import com.sheep.jiuyan.samllsheep.utils.G;
@@ -64,7 +60,7 @@ public class AdpHomeListGrideview extends BaseAdapter {
             convertView.setTag(holder);
         }
         final HomeListEntity entity = getItem(position);
-        ViewUtil.newInstance().showGridviewStatues(context,holder.gridview_item_tag_tv, entity);
+        ViewUtil.updateTag(holder.gridview_item_tag_tv, entity);
         ViewUtil.setText(holder.gridview_item_name_tv, entity.getTitle());
         Glide.with(context)
                 .load(entity.getIcon())

+ 83 - 0
app/src/main/java/com/sheep/gamegroup/view/adapter/AdpNoviceGuidance.java

@@ -0,0 +1,83 @@
+package com.sheep.gamegroup.view.adapter;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.support.v4.app.ActivityOptionsCompat;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.kfzs.appstore.utils.adapter.recyclerview.RecyclerViewAdapter;
+import com.kfzs.appstore.utils.adapter.recyclerview.ViewHolder;
+import com.sheep.gamegroup.model.entity.NoviceGuidance;
+import com.sheep.gamegroup.util.ActivityManager;
+import com.sheep.gamegroup.util.ViewUtil;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.ui.activity.PlayVideoActivity;
+
+import java.util.List;
+
+/**
+ * Created by realicing on 2018/11/9.
+ * realicing@sina.com
+ */
+public class AdpNoviceGuidance extends RecyclerViewAdapter<NoviceGuidance> {
+    public AdpNoviceGuidance(Context context, List<NoviceGuidance> dataList) {
+        super(context, R.layout.item_novice_guidance, dataList);
+    }
+
+    @Override
+    public void convert(ViewHolder viewHolder, NoviceGuidance item, int position) {
+        TextView item_novice_guidance_title = viewHolder.itemView.findViewById(R.id.item_novice_guidance_title);
+//        VideoView item_novice_guidance_video = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video);
+        final ImageView item_novice_guidance_video_image = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video_image);
+        final ImageView item_novice_guidance_video_full = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video_full);
+        TextView item_novice_guidance_content = viewHolder.itemView.findViewById(R.id.item_novice_guidance_content);
+
+        ViewUtil.setVisibility(item_novice_guidance_title, !TextUtils.isEmpty(item.getTitle()));
+        ViewUtil.setVisibility(item_novice_guidance_content, !TextUtils.isEmpty(item.getContent()));
+//        ViewUtil.setVisibility(item_novice_guidance_video, !TextUtils.isEmpty(item.getVideo_url()));
+        ViewUtil.setVisibility(item_novice_guidance_video_image, !TextUtils.isEmpty(item.getVideo_url()));
+        ViewUtil.setVisibility(item_novice_guidance_video_full, !TextUtils.isEmpty(item.getVideo_url()));
+
+        ViewUtil.setImage(item_novice_guidance_video_full, ViewUtil.getNetImgByName("fangda"));
+        ViewUtil.setImage(item_novice_guidance_video_image, item.getVideo_url());
+        ViewUtil.setText(item_novice_guidance_title, item.getTitle());
+        ViewUtil.setText(item_novice_guidance_content, item);
+//        ViewUtil.setVideoAndFull(item_novice_guidance_video, item_novice_guidance_video_full, item_novice_guidance_loading, item.getVideo_url());
+        item_novice_guidance_video_full.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                final Activity activity = ActivityManager.getInstance().currentActivity();
+                activity.startActivity(new Intent(activity, PlayVideoActivity.class),
+                        ActivityOptionsCompat.makeSceneTransitionAnimation(activity, item_novice_guidance_video_image, "video").toBundle());
+            }
+        });
+    }
+//        if(!viewHolderList.contains(viewHolder) && !TextUtils.isEmpty(item.getVideo_url()))
+//            viewHolderList.add(viewHolder);
+//    }
+//
+//    private List<ViewHolder> viewHolderList = ListUtil.emptyList();
+//    public void beforeNotifyDataSetChanged(){
+//        viewHolderList.clear();
+//    }
+//    public void onPause() {
+//        for (ViewHolder viewHolder : viewHolderList) {
+//            VideoView item_novice_guidance_video = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video);
+//            if(item_novice_guidance_video != null)
+//                item_novice_guidance_video.pause();
+//        }
+//    }
+//
+//    public void onDestroy() {
+//        for (ViewHolder viewHolder : viewHolderList) {
+//            VideoView item_novice_guidance_video = viewHolder.itemView.findViewById(R.id.item_novice_guidance_video);
+//            if(item_novice_guidance_video != null)
+//                item_novice_guidance_video.stopPlayback();
+//        }
+//        viewHolderList.clear();
+//    }
+}

+ 2 - 1
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtPersonalCenter.java

@@ -257,7 +257,8 @@ public class FgtPersonalCenter extends BaseFragment {
      */
     private void bindUserCenterModule(BaseViewHolder helper, final UserCenterModule item) {
         if (item.getDisplay() == 1) {
-            helper.setText(R.id.my_item_text, item.getTitle());
+            ViewUtil.updateTag((TextView) helper.getView(R.id.my_item_text), item);
+            helper.setVisible(R.id.my_item_tag, item.getTag() == 0);
             Glide.with(this).load(item.getIcon()).into((ImageView) helper.getView(R.id.my_item_img));
             helper.getView(R.id.my_item_but).setOnClickListener(new View.OnClickListener() {
                 @Override

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

@@ -629,7 +629,7 @@ public class FgtSmallSheep extends BaseFragment implements SmallSheepContract.Vi
                 .build()
                 .inject(this);
         recyclerInitView();
-        LinearLayout.LayoutParams bannerLayoutParams = (LinearLayout.LayoutParams) banner.getLayoutParams();
+        ViewGroup.LayoutParams bannerLayoutParams = banner.getLayoutParams();
         bannerLayoutParams.height = G.WIDTH * 17 / 40;//图片比例发生变化 :306*720
 //        bannerLayoutParams.height = G.WIDTH * 25 / 72;
         banner.setLayoutParams(bannerLayoutParams);

+ 98 - 0
app/src/main/java/com/sheep/gamegroup/view/fragment/FgtUserNoviceGuidance.java

@@ -0,0 +1,98 @@
+package com.sheep.gamegroup.view.fragment;
+
+import android.support.v7.widget.RecyclerView;
+
+import com.sheep.gamegroup.model.api.ApiService;
+import com.sheep.gamegroup.model.entity.BaseMessage;
+import com.sheep.gamegroup.model.entity.NoviceGuidance;
+import com.sheep.gamegroup.view.adapter.AdpNoviceGuidance;
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
+
+import org.afinal.simplecache.ApiKey;
+
+import java.util.List;
+
+import rx.Observable;
+
+/**
+ * Created by realicing on 2018/11/9.
+ * realicing@sina.com
+ * 新手引导
+ */
+public class FgtUserNoviceGuidance extends BaseListFragment2<NoviceGuidance> {
+    @Override
+    public void initView() {
+        TitleBarUtils.getInstance().setTitle(title, "新手引导")
+                .setTitleFinish(title, activity);
+        view_list.setLoadingMoreEnabled(false);
+    }
+
+    private AdpNoviceGuidance adapter;
+    @Override
+    protected RecyclerView.Adapter getAdapter() {
+        adapter = new AdpNoviceGuidance(SheepApp.getInstance(), list);
+        return adapter;
+    }
+
+    @Override
+    protected String getKey(int page, int per_page) {
+        return ApiKey.novice_guidance;
+    }
+
+    @Override
+    protected Observable<BaseMessage> getApi(ApiService apiService) {
+        return apiService.getNoviceGuidance();
+    }
+
+    private NoviceGuidance noviceGuidance;
+    @Override
+    protected void loadList(List<NoviceGuidance> addList) {
+        if(noviceGuidance == null){
+            noviceGuidance = new NoviceGuidance();
+            noviceGuidance.setContent(getString(R.string.new_nav_tips_title));
+        }
+        list.add(noviceGuidance);
+        super.loadList(addList);
+    }
+
+    @Override
+    protected Class<NoviceGuidance> getTClass() {
+        return NoviceGuidance.class;
+    }
+
+//    @Override
+//    public void notifyDataSetChanged() {
+//        if(adapter != null){
+//            adapter.beforeNotifyDataSetChanged();
+//        }
+//        super.notifyDataSetChanged();
+//        if(!list.isEmpty())
+//            view_list.setPullRefreshEnabled(false);
+//    }
+//
+//    @Override
+//    public void onPause() {
+//        super.onPause();
+//        if(adapter != null){
+//            try {
+//                adapter.onPause();
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
+//        }
+//    }
+//
+//    @Override
+//    public void onDestroy() {
+//        super.onDestroy();
+//        if(adapter != null){
+//            try {
+//                adapter.onDestroy();
+//            } catch (Exception e) {
+//                e.printStackTrace();
+//            }
+//        }
+//    }
+}

+ 2 - 1
app/src/main/java/com/sheep/jiuyan/samllsheep/bean/UserCenterModule.java

@@ -1,13 +1,14 @@
 package com.sheep.jiuyan.samllsheep.bean;
 
 import com.sheep.gamegroup.absBase.IJump;
+import com.sheep.gamegroup.absBase.ITag;
 
 /**
  * Created by: zhoujuncai.
  * Created date: 2018/11/1.
  * Description: 用户中心item数据对象
  */
-public class UserCenterModule implements IJump {
+public class UserCenterModule implements IJump, ITag {
 
     /**
      * display:	integer ($int64)

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

@@ -46,6 +46,8 @@ public class ApiKey {
     public static final String my_games = "app/game_consumption/my_games?page=1&per_page=100";
     //首页获取所有发布的热门任务(试玩任务、游戏任务、连续任务)
     public static final String release_task = "app/release_task?page=1&per_page=100&platform=1&is_hot=1&is_recommend=0&about_to_begin=0&task_type=-1&is_succession=3";
+    //新手引导
+    public static final String novice_guidance = "app/user/novice_guidance";
 
     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");

+ 4 - 3
app/src/main/res/drawable/shape_main_search_bar_radius.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <corners android:radius="5dp" />
-    <solid android:color="#80ffffff" />
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="15dp" />
+    <solid android:color="#33ffffff" />
 </shape>

+ 36 - 30
app/src/main/res/layout/homepage_act_layout.xml

@@ -32,8 +32,42 @@
                     android:visibility="gone" />
 
                 <include layout="@layout/check_net_view" />
-
-                <include layout="@layout/homepage_item_banner" />
+                <RelativeLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content">
+
+                    <include layout="@layout/homepage_item_banner" />
+
+                    <LinearLayout
+                        android:id="@+id/to_search_but"
+                        android:layout_width="match_parent"
+                        android:layout_height="30dp"
+                        android:layout_alignParentTop="true"
+                        android:layout_marginStart="16dp"
+                        android:layout_marginTop="25dp"
+                        android:layout_marginEnd="16dp"
+                        android:paddingStart="16dp"
+                        android:paddingEnd="13dp"
+                        android:background="@drawable/shape_main_search_bar_radius"
+                        android:gravity="center"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_weight="1"
+                            android:text="@string/search_hint_txt"
+                            android:textColor="#999"
+                            android:textSize="14sp" />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:text="@string/search_but_text"
+                            android:textColor="#666666"
+                            android:textSize="14sp" />
+                    </LinearLayout>
+                </RelativeLayout>
 
                 <include
                     layout="@layout/homepage_item_gridview_listview"
@@ -177,32 +211,4 @@
         layout="@layout/view_float_title_card"
         android:visibility="visible" />
 
-    <LinearLayout
-        android:id="@+id/to_search_but"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentTop="true"
-        android:layout_marginLeft="10dp"
-        android:layout_marginTop="@dimen/nav_title_size"
-        android:layout_marginRight="10dp"
-        android:background="@drawable/shape_main_search_bar_radius"
-        android:gravity="center"
-        android:orientation="horizontal"
-        android:padding="10dp">
-
-        <TextView
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:text="@string/search_hint_txt"
-            android:textColor="#666666"
-            android:textSize="12sp" />
-
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/search_but_text"
-            android:textColor="#666666"
-            android:textSize="14sp" />
-    </LinearLayout>
 </RelativeLayout>

+ 68 - 0
app/src/main/res/layout/item_novice_guidance.xml

@@ -0,0 +1,68 @@
+<?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">
+
+    <TextView
+        android:id="@+id/item_novice_guidance_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="16dp"
+        android:layout_marginTop="16dp"
+        android:layout_marginRight="16dp"
+        android:gravity="center"
+        android:text="QQ好友、微信好友等邀请赢好礼"
+        android:textColor="#2EC0F3"
+        android:textSize="15sp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+
+    <!--<VideoView-->
+        <!--android:id="@+id/item_novice_guidance_video"-->
+        <!--android:layout_width="match_parent"-->
+        <!--android:layout_height="140dp"-->
+        <!--android:layout_marginStart="16dp"-->
+        <!--android:layout_marginTop="16dp"-->
+        <!--android:layout_marginEnd="16dp"-->
+        <!--app:layout_constraintEnd_toEndOf="parent"-->
+        <!--app:layout_constraintStart_toStartOf="parent"-->
+        <!--app:layout_constraintTop_toBottomOf="@id/item_novice_guidance_title" />-->
+    <ImageView
+        android:id="@+id/item_novice_guidance_video_image"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="16dp"
+        android:layout_marginEnd="16dp"
+        android:scaleType="fitXY"
+        android:adjustViewBounds="true"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/item_novice_guidance_title" />
+
+    <ImageView
+        android:id="@+id/item_novice_guidance_video_full"
+        android:layout_width="33dp"
+        android:layout_height="33dp"
+        android:padding="8dp"
+        android:src="@drawable/loading_01"
+        app:layout_constraintEnd_toEndOf="@id/item_novice_guidance_video_image"
+        app:layout_constraintTop_toTopOf="@id/item_novice_guidance_video_image" />
+
+    <TextView
+        android:id="@+id/item_novice_guidance_content"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="16dp"
+        android:layout_marginEnd="16dp"
+        android:text="首先,肯定要把赚钱这种好事推荐给身边,相信小伙伴会喜欢上我们的,通过你的分享朋友就能免费领取6.6元红包,从此踏上赚钱之路,对你感激"
+        android:textColor="@color/black_666666"
+        android:textSize="13sp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/item_novice_guidance_video_image" />
+</android.support.constraint.ConstraintLayout>

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -112,7 +112,7 @@
     <string name="image_des">icon</string>
     <string name="search_but_text">搜索</string>
     <string name="search_hint_txt">搜索任务名称/游戏名称</string>
-    <string name="new_nav_tips_title">亲爱的羊羊伙伴:\n\n  为了让你赚更多的钱,羊羊平台经过仔细整理,特整理出如下新手引导及赚钱攻略,按此攻略可赚取更多的钱!具体攻略如下:</string>
+    <string name="new_nav_tips_title">亲爱的羊羊伙伴:\n\n\u3000\u3000为了让你赚更多的钱,羊羊平台经过仔细整理,特整理出如下新手引导及赚钱攻略,按此攻略可赚取更多的钱!具体攻略如下:</string>
     <string name="sign_active_rule_text">1.每连续6天可进行刮奖活动。刮奖可刮出现金及其他福利奖品,金额不定。六天过后将会从新计算连续周期。 \n2.每天签到可领取现金,金额不定。 \n3.错过了签到还可以通过分享获得补签。 \n4.连续签到6天可获得刮奖机会,刮奖可刮出高额现金,请坚持签到。 \n5.签到刮出来的现金可直接提现。 \n6.本活动解释权归小绵羊团服所有。</string>
 
     <string name="my_fans">我的粉丝</string>

+ 0 - 1
view/src/main/res/values/dimens.xml

@@ -17,7 +17,6 @@
     <dimen name="tag_vertical_spacing">6.0dip</dimen>
     <dimen name="common_margin">12.0dip</dimen>
     <dimen name="common_margin_10">10.0dip</dimen>
-    <dimen name="nav_title_size">18sp</dimen>
 
     <dimen name="dialog_homepage_width">300dp</dimen>
     <dimen name="dialog_homepage_height">240dp</dimen>