package com.laotan.easyreader.ui.activity.zhihu;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.NestedScrollView;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.laotan.easyreader.R;
import com.laotan.easyreader.bean.zhihu.DetailExtraBean;
import com.laotan.easyreader.bean.zhihu.ZhihuDetailBean;
import com.laotan.easyreader.injector.component.activity.DaggerZhihuDetailComponent;
import com.laotan.easyreader.injector.module.http.ZhihuHttpModule;
import com.laotan.easyreader.presenter.ZhiHuDetailPresenter;
import com.laotan.easyreader.presenter.impl.ZhiHuDetailPresenterImpl;
import com.laotan.easyreader.ui.activity.base.ZhihuDetailBaseActivity;
import com.laotan.easyreader.utils.GlideUtils;
import com.laotan.easyreader.utils.HtmlUtil;
import com.laotan.easyreader.utils.ShareUtils;
import butterknife.BindView;
import butterknife.OnClick;
/**
* Created by quantan.liu on 2017/3/24.
*/
public class ZhiHuDetailActivity extends ZhihuDetailBaseActivity<ZhiHuDetailPresenterImpl> implements ZhiHuDetailPresenter.View {
@BindView(R.id.tv_detail_bottom_like)
TextView tvDetailBottomLike;
@BindView(R.id.tv_detail_bottom_comment)
TextView tvDetailBottomComment;
@BindView(R.id.fl_detail_bottom)
FrameLayout flDetailBottom;
@BindView(R.id.nsv_zhihu_detail)
NestedScrollView nsvZhihuDetail;
@BindView(R.id.wv_detail_content)
WebView wvDetailContent;
int allNum = 0;
int shortNum = 0;
int longNum = 0;
String shareUrl;
boolean isBottomShow = true;
boolean isImageShow = false;
boolean isTransitionEnd = false;
String imgUrl;
boolean isNotTransition = false;
private int id;
@Override
protected void initInject() {
DaggerZhihuDetailComponent.builder()
.zhihuHttpModule(new ZhihuHttpModule())
.build().injectZhiHuDetail(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void initView() {
//不知道为什么如果webview用addview进FrameLyout会导致真机内存泄露,模拟器不管什么方式都内存泄露,不过真机不用addview就不会。
WebSettings settings = wvDetailContent.getSettings();
settings.setAppCacheEnabled(true);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
settings.setJavaScriptEnabled(true);
settings.setLoadWithOverviewMode(true);
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
settings.setSupportZoom(true);
wvDetailContent.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
nsvZhihuDetail.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (scrollY - oldScrollY > 0 && isBottomShow) { //下移隐藏
isBottomShow = false;
flDetailBottom.animate().translationY(flDetailBottom.getHeight());
} else if (scrollY - oldScrollY < 0 && !isBottomShow) { //上移出现
isBottomShow = true;
flDetailBottom.animate().translationY(0);
}
}
});
}
@Override
public void loadData() {
id = getIntent().getIntExtra("id", 0);
isNotTransition = getIntent().getBooleanExtra("isNotTransition", false);
mPresenter.fetchDetailInfo(id);
mPresenter.fetchDetailExtraInfo(id);
}
@Override
public int getContentLayoutId() {
return R.layout.activity_zhihu_detail;
}
@Override
public void showExtraInfo(DetailExtraBean detailExtraBean) {
tvDetailBottomLike.setText(String.format("%d个赞", detailExtraBean.getPopularity()));
tvDetailBottomComment.setText(String.format("%d条评论", detailExtraBean.getComments()));
allNum = detailExtraBean.getComments();
shortNum = detailExtraBean.getShort_comments();
longNum = detailExtraBean.getLong_comments();
}
@Override
public void refreshView(ZhihuDetailBean zhihuDetailBean) {
imgUrl = zhihuDetailBean.getImage();
shareUrl = zhihuDetailBean.getShare_url();
if (isNotTransition) {
GlideUtils.loadDetailImg(this, zhihuDetailBean.getImage(), detailBarImage);
} else {
if (!isImageShow && isTransitionEnd) {
GlideUtils.loadDetailImg(this, zhihuDetailBean.getImage(), detailBarImage);
}
}
toolbarZhihuDetail.setTitle(zhihuDetailBean.getTitle());
detailBarCopyright.setText(zhihuDetailBean.getImage_source());
String htmlData = HtmlUtil.createHtmlData(zhihuDetailBean.getBody(), zhihuDetailBean.getCss(), zhihuDetailBean.getJs());
wvDetailContent.loadData(htmlData, HtmlUtil.MIME_TYPE, HtmlUtil.ENCODING);
}
@OnClick(R.id.tv_detail_bottom_share)
void shareUrl() {
ShareUtils.shareText(this, shareUrl, "分享一篇文章");
}
@OnClick(R.id.tv_detail_bottom_comment)
void gotoComment() {
Intent intent = new Intent();
intent.setClass(this, ZhiHuCommentActivity.class);
intent.putExtra("id", id);
intent.putExtra("allNum", allNum);
intent.putExtra("shortNum", shortNum);
intent.putExtra("longNum", longNum);
startActivity(intent);
}
}