From 2eec3de87b6b616a69a46c1f97c2397159031d2f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 21 十一月 2023 18:01:43 +0800
Subject: [PATCH] 广告升级/bug修复

---
 BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java |  245 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 157 insertions(+), 88 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java
index 2d3d08c..11f1f3e 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java
@@ -1,15 +1,15 @@
 package com.weikou.beibeivideo.ui.recommend;
 
 import android.content.Context;
-import android.content.Intent;
 import android.content.SharedPreferences;
-import android.graphics.Color;
+import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
-import android.os.Build;
 import android.os.Bundle;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
+
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
@@ -21,45 +21,41 @@
 import android.view.View.OnTouchListener;
 import android.view.ViewGroup;
 import android.view.inputmethod.EditorInfo;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ArrayAdapter;
-import android.widget.AutoCompleteTextView;
-import android.widget.BaseAdapter;
 import android.widget.EditText;
-import android.widget.Filter;
-import android.widget.Filterable;
 import android.widget.FrameLayout;
-import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.LinearLayout.LayoutParams;
 import android.widget.ProgressBar;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import com.google.gson.FieldNamingPolicy;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
+import com.lcjian.library.util.ManifestDataUtil;
 import com.lcjian.library.util.common.SoftKeyboardUtils;
 import com.lcjian.library.util.common.StringUtils;
-import com.umeng.analytics.MobclickAgent;
+import com.qq.e.ads.cfg.VideoOption;
+import com.qq.e.ads.nativ.NativeADUnifiedListener;
+import com.qq.e.ads.nativ.NativeUnifiedAD;
+import com.qq.e.ads.nativ.NativeUnifiedADData;
+import com.qq.e.comm.util.AdError;
 import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
 import com.weikou.beibeivideo.BeibeiVideoAPI;
+import com.weikou.beibeivideo.R;
 import com.weikou.beibeivideo.entity.VideoInfo;
 import com.weikou.beibeivideo.entity.VideoType;
 import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
 import com.weikou.beibeivideo.entity.video.VideoContent;
 import com.weikou.beibeivideo.ui.BaseActivity;
 import com.weikou.beibeivideo.ui.video.SearchResultAdapter;
-import com.weikou.beibeivideo.ui.video.SuggestKeysAdapter;
-import com.weikou.beibeivideo.ui.video.VideoCloumn1Adapter;
 import com.weikou.beibeivideo.util.DimenUtils;
+import com.weikou.beibeivideo.util.JsonUtil;
 import com.weikou.beibeivideo.util.UmengEventUtil;
 import com.weikou.beibeivideo.util.ad.ExpressAdManager;
-import com.weikou.beibeivideo.util.ad.manager.SearchResultAdManager;
+import com.weikou.beibeivideo.util.ad.GDTConstant;
+import com.weikou.beibeivideo.util.goldcorn.GoldCornUtil;
 import com.weikou.beibeivideo.util.ui.DividerItemDecoration;
-import com.weikou.beibeivideo.R;
+import com.weikou.beibeivideo.util.ui.TopStatusSettings;
 
 import org.apache.http.Header;
 import org.json.JSONObject;
@@ -107,11 +103,15 @@
 
     private FrameLayout fl_suggest;
 
+    //璧氬奖瑙嗚眴
+    private Runnable makeGoldCornRunnable;
+
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.search_result_activity);
-        initStatusBar();
+        TopStatusSettings.setStatusViewAndDeepColor(this);
 
         suggestFragment = new SearchSuggestFragment();
 
@@ -209,10 +209,15 @@
 
         rv_video_search.setLayoutManager(new MyLinearLayoutManager(getApplicationContext()));
         DividerItemDecoration decoration = new DividerItemDecoration();
-        decoration.setSize(DimenUtils.dip2px(rv_video_search.getContext(), 6));
+        decoration.setSize(DimenUtils.dip2px(rv_video_search.getContext(), 15));
         rv_video_search.addItemDecoration(decoration);
 
-        adapter = new SearchResultAdapter(this, mVideoInfos);
+        adapter = new SearchResultAdapter(this, mVideoInfos, new SearchResultAdapter.VideoAlbumNavClickListener() {
+            @Override
+            public void onNav(int p) {
+                navClick(p);
+            }
+        });
         loading = LayoutInflater.from(this).inflate(R.layout.item_loading, null);
         loading.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
         loading.setVisibility(View.GONE);
@@ -258,6 +263,7 @@
         } else {
             mCurrentKey = et_search_key.getEditableText().toString();
         }
+
         SoftKeyboardUtils.hideSoftInput(SearchResultActivity.this);
         mCurrentPage = 1;
         rl_search_result.setRefreshing(true);
@@ -266,14 +272,15 @@
         search(mCurrentKey, mCurrentType);
     }
 
-    private void initTopBar(List<VideoType> videoTypeList) {
+
+    private void initTopBar() {
         int p = 0;
         ll_top_bar.removeAllViews();
         LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
-        for (int i = 0; i < videoTypeList.size(); i++) {
+        for (int i = 0; i < typeList.size(); i++) {
             final View view = inflater.inflate(R.layout.item_search_result_top_bar_content, null);
             TextView tv_name = view.findViewById(R.id.tv_name);
-            tv_name.setText(videoTypeList.get(i).getName());
+            tv_name.setText(typeList.get(i).getName());
             setTopBarSelect(tv_name, i == p);
             ll_top_bar.addView(view);
             ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
@@ -284,31 +291,39 @@
                 @Override
                 public void onClick(View v) {
                     int p = Integer.parseInt(view.getTag() + "");
-                    selectTopBar(p);
-                    VideoType vt = videoTypeList.get(p);
-
-                    if (StringUtils.isBlank(mCurrentType) || !mCurrentType.equalsIgnoreCase(vt.getId())) {
-                        mCurrentPage = 1;
-                        mCurrentType = vt.getId();
-                        rl_search_result.setRefreshing(true);
-                        search(mCurrentKey, mCurrentType);
-                    }
+                    navClick(p);
                 }
             });
+        }
+    }
+
+    private void navClick(int p) {
+        if (typeList == null || typeList.size() <= p)
+            return;
+        selectTopBar(p);
+        VideoType vt = typeList.get(p);
+
+        if (StringUtils.isBlank(mCurrentType) || !mCurrentType.equalsIgnoreCase(vt.getId())) {
+            mCurrentPage = 1;
+            mCurrentType = vt.getId();
+            rl_search_result.setRefreshing(true);
+            search(mCurrentKey, mCurrentType);
         }
     }
 
     private void setTopBarSelect(TextView tv_name, boolean selected) {
         if (selected) {
             tv_name.setBackgroundResource(R.drawable.vpi__tab_selected_focused_holo);
-            tv_name.setTextSize(17);
-            tv_name.setTextColor(getResources().getColor(R.color.nav_highloght_text_color));
+            tv_name.setTextSize(19);
+            tv_name.setTextColor(getResources().getColor(R.color.search_nav_highlight_text_color));
             tv_name.setPadding(0, 0, 0, DimenUtils.dip2px(getApplicationContext(), 5));
+            tv_name.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
         } else {
             tv_name.setBackground(null);
-            tv_name.setTextSize(12);
+            tv_name.setTextSize(14);
             tv_name.setTextColor(getResources().getColor(R.color.nav_text_color));
             tv_name.setPadding(0, 0, 0, 0);
+            tv_name.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
         }
     }
 
@@ -387,51 +402,82 @@
                 });
     }
 
-    private void fillAD(List<ExpressAdContainer> adList) {
-        if (adList != null) {
-            SearchResultActivity.this.adList.addAll(adList);
-        }
+    private synchronized void fillAD(List<ExpressAdContainer> adList) {
 
-        if (adList.size() > 0) {
-            boolean hasAd = false;
-            if (mVideoInfos != null && mVideoInfos.size() > 0)
-                for (VideoContent vc : mVideoInfos) {
-                    if (vc.getType() == VideoContent.TYPE_AD) {
-                        hasAd = true;
-                        break;
-                    }
+        //鍒ゆ柇褰撳墠椤甸潰鏄惁闇�瑕佸箍鍛�
+        int albumCount = 0;
+        if (mVideoInfos != null && mVideoInfos.size() > 0)
+            for (int i = 0; i < mVideoInfos.size(); i++) {
+                VideoContent vc = mVideoInfos.get(i);
+                if (vc.getType() == VideoContent.TYPE_AD) {
+                    //鏇存柊骞垮憡
+                    vc.setAd(adList.get(0));
+                    adapter.notifyItemChanged(i);
+                    return;
+                } else if (vc.getVideo().getShowType() == 1) {
+                    albumCount++;
                 }
-            //涓嶅瓨鍦ㄥ箍鍛�
-            if (!hasAd) {
-                mVideoInfos.add(0, VideoContent.createAdContent(SearchResultActivity.this.adList.get(0)));
-                SearchResultActivity.this.adList.remove(0);
-                adapter.notifyDataSetChanged();
             }
+
+        if (albumCount >= 2) {
+            VideoContent videoContent = VideoContent.createAdContent(adList.get(0));
+            mVideoInfos.add(2, videoContent);
+            adapter.notifyItemInserted(2);
         }
 
     }
 
+    //鎷夊彇2.0鐨勮嚜娓叉煋骞垮憡
     private void loadAd() {
-        ExpressAdContainer ad = SearchResultAdManager.getInstance(getApplicationContext()).consumeAD();
-        if (ad == null) {
-            SearchResultAdManager.getInstance(getApplicationContext()).loadAD(1, new ExpressAdManager.IAdLoadListener() {
-                @Override
-                public void onSuccess(List<ExpressAdContainer> adList) {
+        //vivo鏃犲箍鍛�
+//        if ("vivo".equalsIgnoreCase(ManifestDataUtil.getAppMetaData(getApplicationContext(), "UMENG_CHANNEL"))) {
+//            return;
+//        }
+
+        String pid = GDTConstant.PID_2_SEARCH_RESULT_ALBUM;
+        NativeUnifiedAD mAdManager = new NativeUnifiedAD(this, pid, new NativeADUnifiedListener() {
+
+            @Override
+            public void onNoAD(AdError adError) {
+
+            }
+
+            @Override
+            public void onADLoaded(List<NativeUnifiedADData> list) {
+                if (list != null && list.size() > 0) {
+                    List<ExpressAdContainer> adList = new ArrayList<>();
+                    adList.add(new ExpressAdContainer(list.get(0)));
                     fillAD(adList);
                 }
-            });
-        } else {
-            List<ExpressAdContainer> adList = new ArrayList<>();
-            adList.add(ad);
-            fillAD(adList);
-        }
-        //鍔犺浇涓嬩竴涓渶瑕佺殑骞垮憡
-        SearchResultAdManager.getInstance(getApplicationContext()).autoLoadAd();
+            }
+        });
+        mAdManager.loadData(1);
     }
 
-    private List<ExpressAdContainer> adList = new ArrayList<>();
+//    private void loadAd() {
+//        ExpressAdContainer ad = SearchResultAdManager.getInstance(getApplicationContext()).consumeAD();
+//        if (ad == null) {
+//            SearchResultAdManager.getInstance(getApplicationContext()).loadAD(1, new ExpressAdManager.IAdLoadListener() {
+//                @Override
+//                public void onSuccess(List<ExpressAdContainer> adList) {
+//                    fillAD(adList);
+//                }
+//            });
+//        } else {
+//            List<ExpressAdContainer> adList = new ArrayList<>();
+//            adList.add(ad);
+//            fillAD(adList);
+//        }
+//        //鍔犺浇涓嬩竴涓渶瑕佺殑骞垮憡
+//        SearchResultAdManager.getInstance(getApplicationContext()).autoLoadAd();
+//    }
+
 
     private void search(String key, String videoType) {
+
+
+
+
 
         UmengEventUtil.search(getApplicationContext(), videoType);
 
@@ -443,15 +489,24 @@
                 new BasicTextHttpResponseHandler() {
 
                     @Override
+                    public void onStart() {
+                        super.onStart();
+                        hiddenSuggestFragment();
+                    }
+
+                    @Override
                     public void onSuccessPerfect(int statusCode,
                                                  Header[] headers, JSONObject jsonObject)
                             throws Exception {
+
+                        //鎸e奖瑙嗚眴
+                        if (makeGoldCornRunnable == null)
+                            makeGoldCornRunnable = GoldCornUtil.makeGoldCorn(getIntent(), et_search_key, null, null, 2, null);
+
                         if (jsonObject.getBoolean("IsPost")) {
-                            Gson gson = new GsonBuilder().setFieldNamingPolicy(
-                                    FieldNamingPolicy.UPPER_CAMEL_CASE)
-                                    .create();
+
                             JSONObject rootData = jsonObject.getJSONObject("Data");
-                            List<VideoInfo> videoInfos = gson.fromJson(
+                            List<VideoInfo> videoInfos = JsonUtil.videoGson.fromJson(
 
                                     rootData.getJSONArray("data").toString(),
                                     new TypeToken<List<VideoInfo>>() {
@@ -460,12 +515,12 @@
                             //璁剧疆瀵艰埅鏍�
                             if (rootData.opt("typeList") != null) {
                                 if (typeList == null) {
-                                    typeList = gson.fromJson(
+                                    typeList = JsonUtil.videoGson.fromJson(
                                             rootData
                                                     .getJSONArray("typeList").toString(),
                                             new TypeToken<List<VideoType>>() {
                                             }.getType());
-                                    initTopBar(typeList);
+                                    initTopBar();
                                 }
                             }
 
@@ -475,17 +530,23 @@
                             }
 
 
-                            if (adList.size() > 0) {
-                                int adPosition = (int) (videoContentList.size() * Math.random());
-                                if (mCurrentPage == 1)
-                                    adPosition = 0;
-                                videoContentList.add(adPosition, VideoContent.createAdContent(adList.get(0)));
-                                adList.remove(0);
-                            }
+                            //璁板綍褰撳墠鐨勫箍鍛婁俊鎭�
+                            VideoContent adContent = null;
+                            int adContentP = -1;
                             if (mCurrentPage <= 1) {
+                                for (int i = 0; i < mVideoInfos.size(); i++) {
+                                    if (mVideoInfos.get(i).getType() == VideoContent.TYPE_AD) {
+                                        adContent = mVideoInfos.get(i);
+                                        adContentP = i;
+                                    }
+                                }
                                 mVideoInfos.clear();
                             }
+
                             mVideoInfos.addAll(videoContentList);
+                            if (adContent != null && mVideoInfos.size() >= adContentP) {
+                                mVideoInfos.add(adContentP, adContent);
+                            }
                             adapter.notifyDataSetChanged();
 
                             if (mVideoInfos != null && mVideoInfos.size() > 0) {
@@ -498,10 +559,8 @@
                                 rl_search_result.setVisibility(View.GONE);
                             }
 
-                            //鍔犺浇涓嬩竴娆¤鐢ㄧ殑骞垮憡
-                            if (videoInfos.size() > 0) {
-                                if (adList.size() < 1)
-                                    loadAd();
+                            if (mCurrentPage == 1) {
+                                loadAd();
                             }
                         }
                     }
@@ -531,7 +590,11 @@
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.tv_search_cancel: {
-                finish();
+                if (fl_suggest.getVisibility() == View.VISIBLE) {
+                    hiddenSuggestFragment();
+                } else {
+                    finish();
+                }
             }
             break;
             case R.id.tv_top_bar_left:
@@ -584,4 +647,10 @@
             }
         }
     }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        GoldCornUtil.removeCallbacks(et_search_key, makeGoldCornRunnable);
+    }
 }

--
Gitblit v1.8.0