From a8fad18ea31ad23c98fd77174c0cdd4bad0de8ea Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 08 四月 2021 19:11:01 +0800
Subject: [PATCH] 新版搜索过渡页优化

---
 BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchActivity.java |  241 +++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 206 insertions(+), 35 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchActivity.java
index d0cf63b..ea1f102 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchActivity.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchActivity.java
@@ -4,28 +4,34 @@
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.graphics.Color;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.GradientDrawable;
 import android.os.Build;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.view.KeyEvent;
+import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnClickListener;
 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.FrameLayout;
 import android.widget.GridView;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.LinearLayout.LayoutParams;
+import android.widget.ScrollView;
 import android.widget.TextView;
 import android.widget.Toast;
 
@@ -34,6 +40,8 @@
 import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
 import com.lcjian.library.util.common.StringUtils;
+import com.lcjian.library.widget.FlowLayout;
+import com.lcjian.library.widget.MyGridView;
 import com.qq.e.ads.cfg.VideoOption;
 import com.qq.e.ads.nativ.ADSize;
 import com.qq.e.ads.nativ.NativeExpressAD;
@@ -45,6 +53,7 @@
 import com.weikou.beibeivideo.entity.ad.AdPositionEnum;
 import com.weikou.beibeivideo.entity.ad.ExpressAdContainer;
 import com.weikou.beibeivideo.ui.BaseActivity;
+import com.weikou.beibeivideo.ui.common.GridVideoAdapter1;
 import com.weikou.beibeivideo.ui.video.SuggestKeysAdapter;
 import com.weikou.beibeivideo.util.BeibeiConstant;
 import com.weikou.beibeivideo.R;
@@ -54,9 +63,13 @@
 import com.weikou.beibeivideo.util.ui.TopStatusSettings;
 
 import org.apache.http.Header;
+import org.json.JSONArray;
 import org.json.JSONObject;
 
+import java.lang.reflect.Type;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
 import java.util.List;
 
 public class SearchActivity extends BaseActivity implements OnClickListener {
@@ -69,9 +82,9 @@
 
     private GridView gv_hot_search;
 
-    private GridView gv_history_search;
+    private FlowLayout fl_history_search;
 
-    private LinearLayout ll_search_history;
+    private LinearLayout ll_search_history, ll_search_rank;
 
     private SearchSuggestFragment suggestFragment;
 
@@ -87,14 +100,16 @@
         fl_advertisement.setOnClickListener(this);
         tv_search_cancel = findViewById(R.id.tv_search_cancel);
         gv_hot_search = findViewById(R.id.gv_hot_search);
-        gv_history_search = findViewById(R.id.gv_history_search);
+        fl_history_search = findViewById(R.id.fl_history_search);
         tv_clear = findViewById(R.id.tv_search_clear_his);
         ll_search_history = findViewById(R.id.ll_search_history);
         fl_suggest = findViewById(R.id.fl_suggest);
+        ll_search_rank = findViewById(R.id.ll_search_rank);
     }
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
+
         super.onCreate(savedInstanceState);
         setContentView(R.layout.search_actvity);
         TopStatusSettings.setStatusViewAndDeepColor(this);
@@ -105,7 +120,7 @@
             @Override
             public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                 if (actionId == EditorInfo.IME_ACTION_SEARCH) {
-                    Intent intent = new Intent(SearchActivity.this, SearchResultActivity.class);
+
                     if (StringUtils.isEmpty(et_search_key.getEditableText()
                             .toString()) && StringUtils.isEmpty(et_search_key.getHint()
                             .toString())) {
@@ -114,13 +129,13 @@
                     } else {
                         if (!StringUtils.isEmpty(et_search_key.getEditableText()
                                 .toString())) {
-                            intent.putExtra("key", et_search_key.getEditableText()
+                            jumpToSearch(et_search_key.getEditableText()
                                     .toString());
                         } else {
-                            intent.putExtra("key", et_search_key.getHint());
+                            jumpToSearch(et_search_key.getHint() + "");
                         }
                     }
-                    startActivity(intent);
+
 
                     return true;
                 }
@@ -203,23 +218,7 @@
             @Override
             public void onItemClick(AdapterView<?> parent, View view,
                                     int position, long id) {
-                Intent intent = new Intent(SearchActivity.this,
-                        SearchResultActivity.class);
-                intent.putExtra("key",
-                        (String) parent.getItemAtPosition(position));
-                startActivity(intent);
-            }
-        });
-        gv_history_search.setOnItemClickListener(new OnItemClickListener() {
-
-            @Override
-            public void onItemClick(AdapterView<?> parent, View view,
-                                    int position, long id) {
-                Intent intent = new Intent(SearchActivity.this,
-                        SearchResultActivity.class);
-                intent.putExtra("key",
-                        (String) parent.getItemAtPosition(position));
-                startActivity(intent);
+                jumpToSearch((String) parent.getItemAtPosition(position));
             }
         });
 
@@ -228,6 +227,7 @@
         getHotSearch();
         getHistorySearch();
         initAdvertisement();// 骞跨偣閫氬箍鍛�
+        getSearchRank();
     }
 
     @Override
@@ -278,10 +278,7 @@
         suggestFragment.setItemClickListener(new SearchSuggestFragment.OnItemClickListener() {
             @Override
             public void onClick(String st) {
-                Intent intent = new Intent(SearchActivity.this,
-                        SearchResultActivity.class);
-                intent.putExtra("key", st);
-                startActivity(intent);
+                jumpToSearch(st);
                 hiddenSuggestFragment();
             }
         });
@@ -340,13 +337,35 @@
         if (!StringUtils.isBlank(historyStr)) {
             String[] historyArray = historyStr.split(",");
             ll_search_history.setVisibility(View.VISIBLE);
-            List<String> history = new ArrayList<String>();
+            List<String> history = new ArrayList<>();
             for (int i = 0; i < 10 && i < historyArray.length; i++) {
                 if (!TextUtils.isEmpty(historyArray[historyArray.length - 1 - i])) {
-                    history.add(historyArray[historyArray.length - 1 - i]);
+                    String st = historyArray[historyArray.length - 1 - i];
+                    if (st != null && !history.contains(st.trim()))
+                        history.add(st.trim());
                 }
             }
-            gv_history_search.setAdapter(new GridSuggestionAdapter(history, false));
+
+            fl_history_search.removeAllViews();
+            for (String st : history) {
+                TextView textView = new TextView(getApplicationContext());
+                textView.setEllipsize(TextUtils.TruncateAt.END);
+                textView.setTextSize(13);
+                textView.setPadding(DimenUtils.dip2px(getApplicationContext(), 20), DimenUtils.dip2px(getApplicationContext(), 5), DimenUtils.dip2px(getApplicationContext(), 20), DimenUtils.dip2px(getApplicationContext(), 5));
+                textView.setText(st);
+                textView.setTextColor(getResources().getColor(R.color.search_item_text_color));
+                textView.setBackgroundResource(R.drawable.shape_search_history_item_bg);
+                FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
+                params.setMargins(0, DimenUtils.dip2px(getApplicationContext(), 15), DimenUtils.dip2px(getApplicationContext(), 13), 0);
+                textView.setLayoutParams(params);
+                textView.setOnClickListener(new OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        jumpToSearch(st);
+                    }
+                });
+                fl_history_search.addView(textView);
+            }
         } else {
             ll_search_history.setVisibility(View.GONE);
         }
@@ -379,8 +398,31 @@
                                     .getJSONObject("Data").getJSONArray("data")
                                     .toString(), new TypeToken<List<String>>() {
                             }.getType());
-                            gv_hot_search.setAdapter(new GridSuggestionAdapter(
+                            if (hotSearchs == null || hotSearchs.size() == 0) {
+                                gv_hot_search.setVisibility(View.GONE);
+                            } else {
+                                gv_hot_search.setVisibility(View.VISIBLE);
+                            }
+                            gv_hot_search.setAdapter(new HotSearchAdapter(
                                     hotSearchs, true));
+                        } else {
+                            gv_hot_search.setVisibility(View.GONE);
+                        }
+                    }
+                });
+    }
+
+    private void getSearchRank() {
+        BeibeiVideoAPI.getSearchRank(this,
+                new BasicTextHttpResponseHandler() {
+                    @Override
+                    public void onSuccessPerfect(int statusCode,
+                                                 Header[] headers, JSONObject jsonObject)
+                            throws Exception {
+                        if (jsonObject.getBoolean("IsPost")) {
+                            JSONObject data = jsonObject
+                                    .getJSONObject("Data").getJSONObject("data");
+                            initSearchRank(data);
                         }
                     }
                 });
@@ -393,7 +435,12 @@
 
     // 1.鍔犺浇骞垮憡锛屽厛璁剧疆鍔犺浇涓婁笅鏂囩幆澧冨拰鏉′欢
     private void initAdvertisement() {
-        AdUtil.AD_TYPE adType = AdUtil.getAdType(getApplicationContext(), AdPositionEnum.videoSearch);
+        AdUtil.AD_TYPE adType1 = AdUtil.getAdType(getApplicationContext(), AdPositionEnum.videoSearch);
+        if (adType1 == AdUtil.AD_TYPE.gdt) {
+            adType1 = AdUtil.AD_TYPE.gdt2;
+        }
+        final AdUtil.AD_TYPE adType = adType1;
+
         fl_advertisement.post(new Runnable() {
             @Override
             public void run() {
@@ -410,10 +457,10 @@
                             });
                         } else if (adType != null) {
                             AdUtil.AD_TYPE newAdType = null;
-                            if (adType == AdUtil.AD_TYPE.gdt) {
+                            if (adType == AdUtil.AD_TYPE.gdt2) {
                                 newAdType = AdUtil.AD_TYPE.csj;
                             } else
-                                newAdType = AdUtil.AD_TYPE.gdt;
+                                newAdType = AdUtil.AD_TYPE.gdt2;
 
                             new ExpressAdManager(newAdType, getApplicationContext()).loadSearchAd(DimenUtils.px2dip(getApplicationContext(), width), new ExpressAdManager.IAdLoadListener() {
                                 @Override
@@ -435,4 +482,128 @@
         });
     }
 
+    private void initSearchRank(JSONObject data) {
+        ll_search_rank.removeAllViews();
+        Type type = new TypeToken<List<String>>() {
+        }.getType();
+        Gson gson = new Gson();
+        int count = 0;
+        for (Iterator<String> its = data.keys(); its.hasNext(); ) {
+            String key = its.next();
+            JSONArray array = data.optJSONArray(key);
+            List<String> list = gson.fromJson(array.toString(), type);
+            String[] sts = new String[list.size()];
+            int row = list.size() / 2;
+            for (int i = 0; i < list.size(); i++) {
+                if (i < row) {
+                    sts[i * 2] = list.get(i);
+                } else {
+                    sts[(i % row) * 2 + 1] = list.get(i);
+                }
+
+            }
+            count++;
+            addSearchRankView(key, Arrays.asList(sts), ll_search_rank, count == data.length());
+        }
+    }
+
+    private void addSearchRankView(String title, List<String> contentList, LinearLayout container, boolean last) {
+        View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_search_rank, null);
+        MyGridView gv = view.findViewById(R.id.gv_content);
+        TextView tv_title = view.findViewById(R.id.tv_title);
+        tv_title.setText(title);
+        gv.setAdapter(new SearchRankAdapter(contentList, getApplicationContext()));
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(DimenUtils.dip2px(getApplicationContext(), 284), LinearLayout.LayoutParams.WRAP_CONTENT);
+        params.rightMargin = DimenUtils.dip2px(getApplicationContext(), !last ? 11 : 0);
+        container.addView(view, params);
+    }
+
+    private void jumpToSearch(String key) {
+        Intent intent = new Intent(SearchActivity.this,
+                SearchResultActivity.class);
+        intent.putExtra("key", key);
+        startActivity(intent);
+    }
+
+
+    class SearchRankAdapter extends BaseAdapter {
+
+        private List<String> mList;
+        private LayoutInflater layoutInflater;
+
+        public SearchRankAdapter(List<String> list, Context context) {
+            this.mList = list;
+            layoutInflater = LayoutInflater.from(context);
+        }
+
+        @Override
+        public int getCount() {
+            return mList == null ? 0 : mList.size();
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return mList.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            ViewHolder viewHolder;
+            if (convertView == null) {
+                viewHolder = new ViewHolder();
+                convertView = LayoutInflater.from(parent.getContext()).inflate(
+                        R.layout.item_search_rank_content, parent, false);
+                viewHolder.tv_rank = convertView
+                        .findViewById(R.id.tv_rank);
+                viewHolder.tv_content = convertView
+                        .findViewById(R.id.tv_content);
+                convertView.setTag(viewHolder);
+            } else {
+                viewHolder = (ViewHolder) convertView.getTag();
+            }
+            if (position % 2 == 0) {
+                viewHolder.tv_rank.setText((position / 2 + 1) + "");
+            } else {
+                viewHolder.tv_rank.setText((mList.size() / 2 + (position + 1) / 2) + "");
+            }
+            viewHolder.tv_content.setText(mList.get(position));
+
+            String color = "#C2C2C2";
+            switch (viewHolder.tv_rank.getText() + "") {
+                case "1":
+                    color = "#FE3E3C";
+                    break;
+                case "2":
+                    color = "#FE853C";
+                    break;
+                case "3":
+                    color = "#FEC03C";
+                    break;
+                default:
+                    color = "#C2C2C2";
+            }
+            GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,
+                    new int[]{Color.parseColor(color), Color.parseColor(color)});
+            gd.setCornerRadius(DimenUtils.dip2px(convertView.getContext(), 4));
+            viewHolder.tv_rank.setBackground(gd);
+            convertView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    jumpToSearch(mList.get(position));
+                }
+            });
+            return convertView;
+        }
+
+        class ViewHolder {
+            TextView tv_rank;
+            TextView tv_content;
+        }
+    }
+
 }

--
Gitblit v1.8.0