package com.pandaq.pandaeye.modules.news.newsdetail;
import android.annotation.SuppressLint;
import android.os.Bundle;
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.v7.widget.Toolbar;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.pandaq.pandaeye.R;
import com.pandaq.pandaeye.config.Constants;
import com.pandaq.pandaeye.activities.ShareActivity;
import com.pandaq.pandaeye.utils.DensityUtil;
import com.pandaq.pandaeye.utils.PicassoTarget;
import com.pandaq.pandaeye.utils.x5webview.JavaSciptFunction;
import com.pandaq.pandaeye.utils.x5webview.WebUtils;
import com.pandaq.pandaeye.widget.FiveThreeImageView;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import com.tencent.smtt.sdk.WebView;
import butterknife.BindView;
import butterknife.ButterKnife;
public class NewsDetailActivity extends ShareActivity implements NewsDetailContract.View {
private String html_url = "";
@BindView(R.id.news_img)
FiveThreeImageView mNewsImg;
@BindView(R.id.toolbar)
Toolbar mToolbar;
@BindView(R.id.toolbar_layout)
CollapsingToolbarLayout mToolbarLayout;
@BindView(R.id.fab)
FloatingActionButton mFab;
@BindView(R.id.wv_topnews_content)
WebView mWvTopnewsContent;
@BindView(R.id.cl_topnews_content_parent)
CoordinatorLayout mClTopnewsContentParent;
@BindView(R.id.pb_topnews_content)
ProgressBar mPbTopnewsContent;
@BindView(R.id.toolbar_title)
TextView mToolbarTitle;
private int width;
private int heigh;
private NewsDetailPresenter mPresenter = new NewsDetailPresenter(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_top_news_info);
ButterKnife.bind(this);
mToolbar.setTitle("");
setSupportActionBar(mToolbar);
initView();
initData();
}
private void initView() {
int[] deviceInfo = DensityUtil.getDeviceInfo(this);
width = deviceInfo[0];
heigh = width * 3 / 5;
mFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!TextUtils.isEmpty(html_url)) {
NewsDetailActivity.this.showShare(html_url, mToolbarTitle.getText().toString());
}
}
});
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finishAfterTransition();
}
});
}
private void initData() {
Bundle bundle = getIntent().getExtras();
String news_id = bundle.getString(Constants.BUNDLE_KEY_ID);
String newsImg = bundle.getString(Constants.BUNDLE_KEY_IMG_URL);
String title = bundle.getString(Constants.BUNDLE_KEY_TITLE);
html_url = bundle.getString(Constants.BUNDLE_KEY_HTML_URL);
loadTopNewsInfo(news_id);
Target target = new PicassoTarget(this, mNewsImg, mToolbarLayout, mToolbar, mFab);
//不设置的话会有时候不加载图片
mNewsImg.setTag(target);
if (!TextUtils.isEmpty(newsImg)) {
Picasso.with(this)
.load(newsImg)
.resize(width, heigh)
.into(target);
}
mToolbarTitle.setText(title);
mToolbarTitle.setSelected(true);
}
@Override
public void showProgressBar() {
mPbTopnewsContent.setVisibility(View.VISIBLE);
}
@Override
public void hideProgressBar() {
mPbTopnewsContent.setVisibility(View.GONE);
}
@Override
public void loadTopNewsInfo(String news_id) {
mPresenter.loadNewsContent(news_id);
}
@Override
public void loadFail(String errmsg) {
showSnackBar(mClTopnewsContentParent, Constants.ERRO + errmsg, Snackbar.LENGTH_SHORT);
}
@SuppressLint("SetJavaScriptEnabled")
@Override
public void loadSuccess(NewsContent topNewsContent) {
mWvTopnewsContent.getSettings().setJavaScriptEnabled(true);
mWvTopnewsContent.getSettings().setUseWideViewPort(true);
mWvTopnewsContent.getSettings().setLoadWithOverviewMode(true);
mWvTopnewsContent.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWvTopnewsContent.getSettings().setAllowFileAccess(true);
mWvTopnewsContent.getSettings().setSupportZoom(true);
mWvTopnewsContent.getSettings().setBuiltInZoomControls(true);
mWvTopnewsContent.getSettings().setSupportMultipleWindows(true);
mWvTopnewsContent.getSettings().setAppCacheEnabled(true);
mWvTopnewsContent.getSettings().setDomStorageEnabled(true);
mWvTopnewsContent.getSettings().setGeolocationEnabled(true);
mWvTopnewsContent.getSettings().setAppCacheMaxSize(Long.MAX_VALUE);
mWvTopnewsContent.addJavascriptInterface(new JavaSciptFunction() {
@Override
public void onJsFunctionCalled(String action) {
}
@JavascriptInterface
public void clickedPicUrl(String url) {
Log.i("jsToAndroid", "pic = " + url);
}
}, "Android");
// 加载新闻数据,如果图片跟标题图相同则不加载
String htmlBody = WebUtils.newsInsertPic(topNewsContent);
String url = WebUtils.buildHtmlForIt(htmlBody, false);
mWvTopnewsContent.loadDataWithBaseURL(WebUtils.BASE_URL, url, WebUtils.MIME_TYPE, WebUtils.ENCODING, WebUtils.FAIL_URL);
}
@Override
protected void onPause() {
super.onPause();
mPresenter.dispose();
}
}