package com.example.administrator.searchpicturetool.search.result; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.design.widget.AppBarLayout; import android.support.design.widget.CollapsingToolbarLayout; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v4.app.FragmentManager; import android.support.v4.content.ContextCompat; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; import android.widget.RelativeLayout; import com.example.administrator.searchpicturetool.R; import com.example.administrator.searchpicturetool.config.Constant; import com.example.administrator.searchpicturetool.util.Utils; import com.facebook.drawee.view.SimpleDraweeView; import com.jude.beam.bijection.RequiresPresenter; import com.jude.beam.expansion.BeamBaseActivity; import com.jude.utils.JUtils; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; /** * Created by wenhuaijun on 2015/11/3 0003. */ @RequiresPresenter(SearchResultActivityPresenter.class) public class SearchResultActivity extends BeamBaseActivity<SearchResultActivityPresenter> { @BindView(R.id.searchView) SearchView searchView; @BindView(R.id.bg_img) SimpleDraweeView imageView; @BindView(R.id.id_search_coordinator_layout) CoordinatorLayout mCoordinatorLayout; @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.collapsingToolbarLayout) CollapsingToolbarLayout collapsingToolbarLayout; @BindView(R.id.search_fab) FloatingActionButton fab; @BindView(R.id.appbar) AppBarLayout appBarLayout; FragmentManager manager; MenuItem item; private int maxScrollHeight = 0; private SearchResultFragment searchResultFragment; private String imagUrl; private String searchWord; private String uriType; private String uri; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search_result); ButterKnife.bind(this); onSetToolbar(toolbar); maxScrollHeight = JUtils.dip2px(200); searchWord = getIntent().getBundleExtra("search").getString("search"); collapsingToolbarLayout.setTitle(searchWord); marginTopStatusHeight(); marginNavigationBar(fab); imagUrl = getIntent().getBundleExtra("search").getString("imagUrl"); uriType =getIntent().getBundleExtra("search").getString("uriType"); if(TextUtils.isEmpty(imagUrl)){ uri =getPresenter().getBgImg()+""; imageView.setBackgroundResource(Integer.parseInt(uri)); uriType =Constant.URI_TYPE_NATIVE; }else if(TextUtils.isEmpty(uriType)||uriType.equals(Constant.URI_TYPE_NET)){ imageView.setImageURI(Uri.parse(imagUrl)); uriType =Constant.URI_TYPE_NET; uri =imagUrl; } else if(uriType.equals(Constant.URI_TYPE_NATIVE)){ imageView.setBackgroundResource(Integer.parseInt(imagUrl)); uri=imagUrl; } manager = getSupportFragmentManager(); searchResultFragment = new SearchResultFragment(); searchResultFragment.setArguments(getIntent().getBundleExtra("search")); manager.beginTransaction().replace(R.id.search_container, searchResultFragment).commit(); initAppBarSetting(); initSearchView(); } /** * fixed: fitsystemWindowLayout在CollapsingToolbarLayout上存在的marginbug */ public void marginTopStatusHeight() { if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT){ FrameLayout.LayoutParams frameLayoutParams = (FrameLayout.LayoutParams)toolbar.getLayoutParams(); RelativeLayout.LayoutParams relativeLayoutParams = (RelativeLayout.LayoutParams)mCoordinatorLayout.getLayoutParams(); relativeLayoutParams.topMargin=-JUtils.getStatusBarHeight(); frameLayoutParams.topMargin=JUtils.getStatusBarHeight()*2; mCoordinatorLayout.setLayoutParams(relativeLayoutParams); toolbar.setLayoutParams(frameLayoutParams); } } public void marginNavigationBar(View view){ if(!Utils.checkDeviceHasNavigationBar(this)){ return; } RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams)view.getLayoutParams(); layoutParams.setMargins(JUtils.dip2px(16),JUtils.dip2px(16),JUtils.dip2px(16),Utils.getNavigationBarHeight(this)/2); view.setLayoutParams(layoutParams); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.search_activity_menu, menu); item = menu.findItem(R.id.action_search); if(TextUtils.isEmpty(imagUrl)){ menu.findItem(R.id.action_collect_header_img).setVisible(false); menu.findItem(R.id.action_download_header_img).setVisible(false); menu.findItem(R.id.action_collect_tip).setVisible(false); } item.setVisible(false); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { /* int id = item.getItemId(); if (id == R.id.action_settings) { return true; }*/ switch (item.getItemId()) { case R.id.action_search: if (!searchView.isShown()) { searchView.setVisibility(View.VISIBLE); searchView.onActionViewExpanded(); searchView.requestFocus(); searchView.setQuery(searchWord, false); } else { if (searchView.getQuery().toString().equals("")) { searchView.setVisibility(View.GONE); searchView.onActionViewCollapsed(); // collapsingToolbarLayout.requestFocus(); } else { searchView.setQuery(searchView.getQuery(), true); } } break; case R.id.action_collect_header_img: getPresenter().collectHeaderImg(imagUrl); break; case R.id.action_download_header_img: getPresenter().downloadHeaderImg(imagUrl); break; case R.id.action_collect_tip: getPresenter().collectSearchTip(searchWord,uriType,uri); break; default: return super.onOptionsItemSelected(item); } return true; } public void initAppBarSetting() { appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int i) { stopRefresh(i); if (i > (-maxScrollHeight/2) && fab.isShown()) { fab.hide(); if (item != null) { item.setVisible(false); } } else if (i <= (-maxScrollHeight/2) && !fab.isShown()) { fab.show(); item.setVisible(true); } } }); } private void initSearchView() { searchView.setOnQueryTextListener(new android.support.v7.widget.SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { searchView.onActionViewCollapsed(); searchWord = query; searchPicture(searchWord); searchView.setVisibility(View.GONE); collapsingToolbarLayout.setTitle(searchWord); return true; } @Override public boolean onQueryTextChange(String newText) { return false; } }); } @OnClick(R.id.search_fab) public void clickFab(View view) { getPresenter().gotoUpWithAnim(0); }@OnClick(R.id.floating_action_button) public void collectSearchTip(View view) { getPresenter().collectSearchTip(searchWord,uriType,uri); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 100) { if (data != null) { getPresenter().gotoUp(data.getIntExtra("position", 0)); } } } private void searchPicture(String query) { searchResultFragment = new SearchResultFragment(); Bundle bundle = new Bundle(); bundle.putString("search", query); searchResultFragment.setArguments(bundle); manager.beginTransaction().replace(R.id.search_container, searchResultFragment).commit(); } public SearchResultFragment getSearchResultFragment() { return searchResultFragment; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: if (searchView.isShown()) { searchView.setVisibility(View.GONE); searchView.onActionViewCollapsed(); return true; } else { return super.onKeyDown(keyCode, event); } default: return super.onKeyDown(keyCode, event); } } public void toastMessage(String text){ JUtils.Toast(text); } public void showSnackBar(View view,String message, String action, View.OnClickListener listener){ Snackbar.make(fab, message, Snackbar.LENGTH_SHORT) .setActionTextColor(ContextCompat.getColor(this,R.color.colorPrimaryDark)) .setAction(action,listener).show(); } public void stopRefresh(int i){ if(searchResultFragment !=null&& searchResultFragment.getListView()!=null&& searchResultFragment.getListView().getSwipeToRefresh()!=null){ searchResultFragment.getListView().getSwipeToRefresh().setEnabled(i==0); } } }