admin
2021-04-07 cbb88109494ffc7916f6639c20ce05c0cec941a9
BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchActivity.java
@@ -20,6 +20,7 @@
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.GridView;
import android.widget.ImageView;
@@ -41,9 +42,16 @@
import com.umeng.analytics.MobclickAgent;
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
import com.weikou.beibeivideo.BeibeiVideoAPI;
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.video.SuggestKeysAdapter;
import com.weikou.beibeivideo.util.BeibeiConstant;
import com.weikou.beibeivideo.R;
import com.weikou.beibeivideo.util.DimenUtils;
import com.weikou.beibeivideo.util.ad.AdUtil;
import com.weikou.beibeivideo.util.ad.ExpressAdManager;
import com.weikou.beibeivideo.util.ui.TopStatusSettings;
import org.apache.http.Header;
import org.json.JSONObject;
@@ -53,7 +61,7 @@
public class SearchActivity extends BaseActivity implements OnClickListener {
    private AutoCompleteTextView et_search_key;
    private EditText et_search_key;
    private TextView tv_clear;
@@ -65,7 +73,13 @@
    private LinearLayout ll_search_history;
    private SearchSuggestFragment suggestFragment;
    private FrameLayout fl_suggest;
    private String value = "";
    private boolean touchSearchInput = false;
    private void initView() {
        fl_advertisement = findViewById(R.id.fl_advertisement);
@@ -76,29 +90,16 @@
        gv_history_search = findViewById(R.id.gv_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);
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search_actvity);
        /*
         * 计算状态栏高度并设置
         */
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            int result = 0;
            int resourceId = getResources().getIdentifier("status_bar_height",
                    "dimen", "android");
            if (resourceId > 0) {
                result = getResources().getDimensionPixelSize(resourceId);
            }
            LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,
                    result);
            findViewById(R.id.v_status_bar).setLayoutParams(params);
        } else {
            findViewById(R.id.v_status_bar).setVisibility(View.GONE);
        }
        TopStatusSettings.setStatusViewAndDeepColor(this);
        initView();
        suggestFragment = new SearchSuggestFragment();
        et_search_key.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
@@ -146,44 +147,24 @@
            @Override
            public void afterTextChanged(Editable s) {
                if (!TextUtils.isEmpty(s.toString())
                        || !TextUtils.isEmpty(et_search_key.getHint())) {
                    suggestSearch(s.toString());
                if (s != null && !TextUtils.isEmpty(s.toString())) {
                    et_search_key.setCompoundDrawablesWithIntrinsicBounds(0, 0,
                            R.drawable.ic_clear, 0);
//               tv_search_cancel.setText(R.string.search);
                } else {
                    et_search_key.setCompoundDrawablesWithIntrinsicBounds(0, 0,
                            0, 0);
//               tv_search_cancel.setText(R.string.cancel);
                }
                suggestSearch(s != null ? s.toString() : null);
            }
        });
        if (!TextUtils.isEmpty(value)) {
            et_search_key.setCompoundDrawablesWithIntrinsicBounds(0, 0,
                    R.drawable.ic_clear, 0);
//         tv_search_cancel.setText(R.string.search);
        } else {
            et_search_key.setCompoundDrawablesWithIntrinsicBounds(0, 0,
                    0, 0);
//         tv_search_cancel.setText(R.string.cancel);
        }
        et_search_key.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                if (parent.getItemAtPosition(position) != null) {
                    Intent intent = new Intent(SearchActivity.this,
                            SearchResultActivity.class);
                    intent.putExtra("key", parent.getItemAtPosition(position)
                            .toString());
                    startActivity(intent);
                }
            }
        });
        et_search_key.setOnTouchListener(new OnTouchListener() {
@@ -192,6 +173,7 @@
                // getCompoundDrawables() 可以获取一个长度为4的数组,
                // 存放drawableLeft,Right,Top,Bottom四个图片资源对象
                // index=2 表示的是 drawableRight 图片资源对象
                Drawable drawable = et_search_key.getCompoundDrawables()[2];
                if (drawable == null)
                    return false;
@@ -208,6 +190,7 @@
                return false;
            }
        });
        gv_hot_search.setOnItemClickListener(new OnItemClickListener() {
@@ -245,20 +228,21 @@
    public void onResume() {
        super.onResume();
        getHistorySearch();
        MobclickAgent.onPageStart("搜索页");
    }
    @Override
    public void onPause() {
        super.onPause();
        MobclickAgent.onPageEnd("搜索页");
    }
    @Override
    public void onClick(final 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_search_clear_his:
                clearHistorySearch();
@@ -271,7 +255,41 @@
        }
    }
    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);
//        if (suggestFragment.isAdded()) {
//            return;
//        }
        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);
                hiddenSuggestFragment();
            }
        });
        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", "");
@@ -282,21 +300,29 @@
                    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());
                            ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                                    SearchActivity.this,
                                    android.R.layout.simple_list_item_1,
                                    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();
                        }
                    }
                });
    }
@@ -361,76 +387,46 @@
    // 1.加载广告,先设置加载上下文环境和条件
    private void initAdvertisement() {
        NativeExpressAD nativeExpressAD = new NativeExpressAD(SearchActivity.this, new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT),
                BeibeiConstant.GDT_ID, BeibeiConstant.GDT_SEARCH_NATIVE, new NativeExpressAD.NativeExpressADListener() {
        AdUtil.AD_TYPE adType = AdUtil.getAdType(getApplicationContext(), AdPositionEnum.videoSearch);
        fl_advertisement.post(new Runnable() {
            @Override
            public void onADLoaded(final List<NativeExpressADView> list) {
                runOnUiThread(new Runnable() {
            public void run() {
                int width = fl_advertisement.getWidth() - fl_advertisement.getPaddingLeft() - fl_advertisement.getPaddingRight();
                new ExpressAdManager(adType, getApplicationContext()).loadSearchAd(DimenUtils.px2dip(getApplicationContext(), width), new ExpressAdManager.IAdLoadListener() {
                    @Override
                    public void run() {
                        if (null != list && list.size() > 0) {
                            NativeExpressADView adView = list.get(0);
                            adView.render();
                            FrameLayout parent = (FrameLayout) adView.getParent();
                            if (parent != null) {
                                parent.removeAllViews();
                            }
                            fl_advertisement.addView(adView);
                    public void onSuccess(List<ExpressAdContainer> adList) {
                        if (adList != null && adList.size() > 0) {
                            ExpressAdManager.renderAndFillAd(SearchActivity.this, adList.get(0), fl_advertisement, new ExpressAdManager.IAdEventListener() {
                                @Override
                                public void closeAd(ExpressAdContainer ad) {
                                    fl_advertisement.removeAllViews();
                                }
                            });
                        } else if (adType != null) {
                            AdUtil.AD_TYPE newAdType = null;
                            if (adType == AdUtil.AD_TYPE.gdt) {
                                newAdType = AdUtil.AD_TYPE.csj;
                            } else
                                newAdType = AdUtil.AD_TYPE.gdt;
                            new ExpressAdManager(newAdType, getApplicationContext()).loadSearchAd(DimenUtils.px2dip(getApplicationContext(), width), new ExpressAdManager.IAdLoadListener() {
                                @Override
                                public void onSuccess(List<ExpressAdContainer> adList) {
                                    if (adList != null && adList.size() > 0) {
                                        ExpressAdManager.renderAndFillAd(SearchActivity.this, adList.get(0), fl_advertisement, new ExpressAdManager.IAdEventListener() {
                                            @Override
                                            public void closeAd(ExpressAdContainer ad) {
                                                fl_advertisement.removeAllViews();
                                            }
                                        });
                                    }
                                }
                            });
                        }
                    }
                });
            }
            @Override
            public void onRenderFail(NativeExpressADView nativeExpressADView) {
            }
            @Override
            public void onRenderSuccess(NativeExpressADView nativeExpressADView) {
            }
            @Override
            public void onADExposure(NativeExpressADView nativeExpressADView) {
            }
            @Override
            public void onADClicked(NativeExpressADView nativeExpressADView) {
            }
            @Override
            public void onADClosed(NativeExpressADView nativeExpressADView) {
            }
            @Override
            public void onADLeftApplication(NativeExpressADView nativeExpressADView) {
            }
            @Override
            public void onADOpenOverlay(NativeExpressADView nativeExpressADView) {
            }
            @Override
            public void onADCloseOverlay(NativeExpressADView nativeExpressADView) {
            }
            @Override
            public void onNoAD(AdError adError) {
            }
        }); // 传入Activity
        // 注意:如果您在联盟平台上新建原生模板广告位时,选择了支持视频,那么可以进行个性化设置(可选)
        nativeExpressAD.setVideoOption(new VideoOption.Builder()
                .setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频
                .setAutoPlayMuted(true) // 自动播放时为静音
                .build()); //
        nativeExpressAD.loadAD(2);
        });
    }
}