package com.likebamboo.osa.android.ui; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.support.v7.widget.SearchView; import android.text.TextUtils; import com.likebamboo.osa.android.R; import com.likebamboo.osa.android.entity.TagList; import com.likebamboo.osa.android.ui.nav.ActivityNavigator; import com.likebamboo.osa.android.ui.view.TagGroup; import com.likebamboo.osa.android.ui.view.blur.BlurBehind; import com.likebamboo.osa.android.utils.ToastUtil; import com.orm.StringUtil; import java.util.ArrayList; import java.util.List; import butterknife.ButterKnife; import butterknife.InjectView; /** * 搜索界面 */ public class SearchActivity extends BaseActivity { @InjectView(R.id.search_history_tags) TagGroup mHistoryTags; /** * ActionBar搜索布局 */ private SearchView searchView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); ButterKnife.inject(this); // 背景 BlurBehind.getInstance().withFilterColor(getResources().getColor(R.color.bg_blur)).setBackground(this); // 初始化搜索布局 initSearchView(); // 设置历史数据 setHistoryDatas(); // 添加监听器 addListener(); } /** * 添加监听器 */ private void addListener() { // 监听标签点击事件 mHistoryTags.setOnTagClickListener(new TagGroup.IOnTagClickListener() { @Override public void onTagClick(String tag) { // 执行搜索 doSearch(tag); } @Override public void onTagLongClick(String tag) { // 删除历史记录 mHistoryTags.deleteTag(tag); TagList.Tag.delete(tag); // 显示toast ToastUtil.show(getApplicationContext(), R.string.delete_search_history_succes, tag); } }); // 设置搜索监听 searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { public boolean onQueryTextSubmit(String query) { return doSearch(query); } public boolean onQueryTextChange(String newText) { return true; } }); } /** * 开始搜索 * * @param key * @return */ private boolean doSearch(String key) { if (TextUtils.isEmpty(key)) { return false; } // 保存历史记录 mHistoryTags.addTag(0, key); TagList.Tag t = TagList.Tag.findTagByName(key); if (t == null) { t = new TagList.Tag(); t.setName(key); } t.setAddTime(System.currentTimeMillis()); t.save(); // 清空输入框 searchView.setQuery("", false); // 开始搜索 Intent i = new Intent(SearchActivity.this, SearchResultActivity.class); // 搜索关键字 i.putExtra(SearchResultActivity.EXTRA_SEARCH_KEY, key); // 设置不显示抽屉导航 i.putExtra(NavigationActivity.EXTRA_SHOULD_DISABLE_DRAWER, true); // 设置标题 i.putExtra(EXTRA_TITLE, key); ActivityNavigator.withAnim(i, ActivityNavigator.AnimationMode.DEFAULT).startActivity(SearchActivity.this, i); return true; } /** * 设置历史数据 */ private void setHistoryDatas() { List<String> tags = new ArrayList<>(); List<TagList.Tag> datas = TagList.Tag.find(TagList.Tag.class, null, null, null, StringUtil.toSQLName("addTime") + " desc ", null); if (datas != null) { for (TagList.Tag tag : datas) { tags.add(tag.getName()); } } mHistoryTags.setTags(tags); } /** * 初始化搜索布局 */ private void initSearchView() { ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_CUSTOM); searchView = new SearchView(this); searchView.onActionViewExpanded(); searchView.setIconifiedByDefault(true); actionBar.setHomeAsUpIndicator(R.drawable.ic_up); actionBar.setCustomView(searchView); actionBar.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); } @Override public void finish() { super.finish(); overridePendingTransition(0, R.anim.fade_out); } }