package com.yuyh.sprintnba.ui.fragment; import android.os.Bundle; import android.os.Handler; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import com.yuyh.sprintnba.R; import com.yuyh.sprintnba.base.BaseAppCompatActivity; import com.yuyh.sprintnba.base.BaseLazyFragment; import com.yuyh.sprintnba.event.ThreadContentEvent; import com.yuyh.sprintnba.widget.HuPuWebView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import butterknife.InjectView; /** * @author yuyh. * @date 16/6/25. */ public class ThreadContentFragment extends BaseLazyFragment implements HuPuWebView.HuPuWebViewCallBack, HuPuWebView.OnScrollChangedCallback { @InjectView(R.id.hupuWebView) HuPuWebView hupuWebView; private String url; android.support.v7.widget.Toolbar mToolbar = null; private boolean isNeedScrollToBottom = false; public static ThreadContentFragment newInstance(String url) { ThreadContentFragment mFragment = new ThreadContentFragment(); Bundle bundle = new Bundle(); bundle.putString("url", url); mFragment.setArguments(bundle); return mFragment; } @Override protected void onCreateViewLazy(Bundle savedInstanceState) { super.onCreateViewLazy(savedInstanceState); setHasOptionsMenu(true); showLoadingDialog(); setContentView(R.layout.fragment_thread_detail); url = getArguments().getString("url"); hupuWebView.loadUrl(url); hupuWebView.setCallBack(this); hupuWebView.setOnScrollChangedCallback(this); EventBus.getDefault().register(this); mToolbar = ((BaseAppCompatActivity) mActivity).getToolbar(); } @Override protected void onPauseLazy() { if (hupuWebView != null) { hupuWebView.onPause(); hupuWebView.reload(); } super.onPauseLazy(); } @Override protected void onDestroyViewLazy() { super.onDestroyViewLazy(); if (hupuWebView != null) { hupuWebView.removeAllViews(); hupuWebView.destroy(); } EventBus.getDefault().unregister(this); } @Override public void onFinish() { new Handler().postDelayed(new Runnable() { @Override public void run() { hideLoadingDialog(); } }, 500); if (isNeedScrollToBottom) { isNeedScrollToBottom = false; hupuWebView.postDelayed(new Runnable() { @Override public void run() { //hupuWebView.scrollTo(0, (int) (hupuWebView.getContentHeight()* hupuWebView.getScale())); hupuWebView.setScrollY((int) (hupuWebView.getContentHeight() * hupuWebView.getScale() - hupuWebView.getHeight())); } }, 500); } } @Override public void onUpdatePager(int page, int total) { } @Override public void onError() { new Handler().postDelayed(new Runnable() { @Override public void run() { hideLoadingDialog(); } }, 1000); } @Override public void onScroll(int dx, int dy, int y, int oldy) { } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_thread_detail, menu); super.onCreateOptionsMenu(menu, inflater); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_refresh: hupuWebView.reload(); break; } return super.onOptionsItemSelected(item); } @Subscribe public void onEventMainThread(ThreadContentEvent event) { isNeedScrollToBottom = true; hupuWebView.reload(); } }