From cbb88109494ffc7916f6639c20ce05c0cec941a9 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 07 四月 2021 15:07:45 +0800 Subject: [PATCH] 3.9.1bug修复 --- BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java | 319 +++++++++++++++++++++++++++++++++------------------- 1 files changed, 201 insertions(+), 118 deletions(-) diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java index 9019582..adc22ff 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java @@ -1,11 +1,9 @@ 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; @@ -21,19 +19,11 @@ 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.Filter; -import android.widget.Filterable; -import android.widget.ImageView; +import android.widget.EditText; +import android.widget.FrameLayout; 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; @@ -41,23 +31,27 @@ import com.google.gson.reflect.TypeToken; 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.UmengEventUtil; import com.weikou.beibeivideo.util.ad.ExpressAdManager; +import com.weikou.beibeivideo.util.ad.GDTConstant; import com.weikou.beibeivideo.util.ad.manager.SearchResultAdManager; 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; @@ -68,7 +62,7 @@ public class SearchResultActivity extends BaseActivity implements OnClickListener { - private AutoCompleteTextView et_search_key; + private EditText et_search_key; private TextView tv_search_cancel; @@ -101,11 +95,18 @@ private LinearLayout ll_empty; + private SearchSuggestFragment suggestFragment; + + private FrameLayout fl_suggest; + + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.search_result_activity); - initStatusBar(); + TopStatusSettings.setStatusViewAndDeepColor(this); + + suggestFragment = new SearchSuggestFragment(); rl_search_result = findViewById(R.id.rl_search_result); et_search_key = findViewById(R.id.et_search_key); @@ -113,6 +114,7 @@ rv_video_search = findViewById(R.id.rv_video_search); ll_top_bar = findViewById(R.id.ll_top_bar); ll_empty = findViewById(R.id.ll_empty); + fl_suggest = findViewById(R.id.fl_suggest); tv_search_cancel.setOnClickListener(this); et_search_key.addTextChangedListener(new TextWatcher() { @@ -131,33 +133,18 @@ @Override public void afterTextChanged(Editable s) { - if (!TextUtils.isEmpty(s.toString()) - || !TextUtils.isEmpty(et_search_key.getText())) { - if (mFirst) { - mFirst = false; - } else { - suggestSearch(s.toString()); - } + if (!TextUtils.isEmpty(s.toString())) { et_search_key.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_clear, 0); } else { et_search_key.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); } - } - }); - et_search_key.setOnItemClickListener(new OnItemClickListener() { - - @Override - public void onItemClick(AdapterView<?> parent, View view, - int position, long id) { - mFirst = true; - mCurrentKey = parent.getItemAtPosition(position).toString(); - SoftKeyboardUtils.hideSoftInput(SearchResultActivity.this); - mCurrentPage = 1; - //娓呴櫎椤堕儴鍒嗙被 - typeList = null; - search(mCurrentKey, mCurrentType); + if (mFirst) { + mFirst = false; + } else { + suggestSearch(s != null ? s.toString() : null); + } } }); @@ -190,18 +177,7 @@ @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { - if (StringUtils.isEmpty(et_search_key.getEditableText() - .toString())) { - mCurrentKey = et_search_key.getText().toString(); - } else { - mCurrentKey = et_search_key.getEditableText().toString(); - } - SoftKeyboardUtils.hideSoftInput(SearchResultActivity.this); - mCurrentPage = 1; - rl_search_result.setRefreshing(true); - //娓呴櫎椤堕儴鍒嗙被 - typeList = null; - search(mCurrentKey, mCurrentType); + startSearch(); return true; } return false; @@ -226,10 +202,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); @@ -268,14 +249,30 @@ // loadAd(); } - private void initTopBar(List<VideoType> videoTypeList) { + private void startSearch() { + if (StringUtils.isEmpty(et_search_key.getEditableText() + .toString())) { + mCurrentKey = et_search_key.getText().toString(); + } else { + mCurrentKey = et_search_key.getEditableText().toString(); + } + SoftKeyboardUtils.hideSoftInput(SearchResultActivity.this); + mCurrentPage = 1; + rl_search_result.setRefreshing(true); + //娓呴櫎椤堕儴鍒嗙被 + typeList = null; + search(mCurrentKey, mCurrentType); + } + + + 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(); @@ -286,31 +283,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(Color.parseColor("#FFFFFF")); + 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.setTextColor(Color.parseColor("#999999")); + 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)); } } @@ -321,7 +326,37 @@ } } + + private void hiddenSuggestFragment() { + fl_suggest.setVisibility(View.GONE); + getSupportFragmentManager().beginTransaction().remove(suggestFragment).commitAllowingStateLoss(); + } + + private void showSuggestFragment(String key, List<String> list) { + Bundle bundle = new Bundle(); + bundle.putString("key", key); + bundle.putString("list", new Gson().toJson(list)); + fl_suggest.setVisibility(View.VISIBLE); + suggestFragment.setItemClickListener(new SearchSuggestFragment.OnItemClickListener() { + @Override + public void onClick(String st) { + mFirst = true; + hiddenSuggestFragment(); + et_search_key.setText(st); + startSearch(); + } + }); + + suggestFragment.setArguments(bundle); + getSupportFragmentManager().beginTransaction().replace(R.id.fl_suggest, suggestFragment).commitAllowingStateLoss(); + } + + private void suggestSearch(String key) { + if (StringUtils.isEmpty(key)) { + hiddenSuggestFragment(); + } + SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE); String uid = preferences.getString("uid", ""); @@ -332,65 +367,99 @@ public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { + List<String> results = null; if (jsonObject.getBoolean("IsPost")) { Gson gson = new GsonBuilder().setFieldNamingPolicy( FieldNamingPolicy.UPPER_CAMEL_CASE) .create(); - List<String> results = gson.fromJson(jsonObject + results = gson.fromJson(jsonObject .getJSONObject("Data").getJSONArray("data") .toString(), new TypeToken<List<String>>() { }.getType()); - SuggestKeysAdapter adapter = new SuggestKeysAdapter(getApplicationContext(), results); - et_search_key.setAdapter(adapter); - adapter.notifyDataSetChanged(); + + +// SuggestKeysAdapter adapter = new SuggestKeysAdapter(getApplicationContext(), results); +// et_search_key.setAdapter(adapter); +// adapter.notifyDataSetChanged(); } + + if (results != null && results.size() > 0) { + showSuggestFragment(key, results); + suggestFragment.setData(key, results); + } else { + hiddenSuggestFragment(); + } + } }); } - 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) { + 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.setVideoPlayPolicy(VideoOption.VideoPlayPolicy.AUTO); + 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) { @@ -402,6 +471,12 @@ BeibeiVideoAPI.search(this, uid, key, videoType, String.valueOf(mCurrentPage), new BasicTextHttpResponseHandler() { + + @Override + public void onStart() { + super.onStart(); + hiddenSuggestFragment(); + } @Override public void onSuccessPerfect(int statusCode, @@ -426,7 +501,7 @@ .getJSONArray("typeList").toString(), new TypeToken<List<VideoType>>() { }.getType()); - initTopBar(typeList); + initTopBar(); } } @@ -436,17 +511,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) { @@ -459,10 +540,8 @@ rl_search_result.setVisibility(View.GONE); } - //鍔犺浇涓嬩竴娆¤鐢ㄧ殑骞垮憡 - if (videoInfos.size() > 0) { - if (adList.size() < 1) - loadAd(); + if (mCurrentPage == 1) { + loadAd(); } } } @@ -492,7 +571,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: -- Gitblit v1.8.0