package com.c9mj.platform.explore.ui;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.NestedScrollView;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.CardView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.TextView;
import com.blankj.utilcode.utils.ToastUtils;
import com.bumptech.glide.Glide;
import com.c9mj.platform.R;
import com.c9mj.platform.explore.mvp.model.bean.ExploreDetailBean;
import com.c9mj.platform.explore.mvp.presenter.impl.ExploreDetailPresenterImpl;
import com.c9mj.platform.explore.mvp.view.IExploreDetailView;
import com.c9mj.platform.gallery.ui.GalleryActivity;
import com.c9mj.platform.widget.fragment.BaseFragment;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
/**
* Created by Administrator on 2016/11/16.
*/
public class ExploreDetailFragment extends BaseFragment implements IExploreDetailView {
private static final String DOC_ID = "doc_id";
private static final String TITLE = "title";
private static final String IMG = "img";
private final JsInterface jsInterface = new JsInterface();
@BindView(R.id.iv_appbar)
ImageView iv_appbar;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.toolbar_title)
TextView tv_title;
@BindView(R.id.cardview_webview)
CardView cv_webview;
@BindView(R.id.webview)
WebView webView;
@BindView(R.id.iv_img_0)
ImageView iv_img_0;
@BindView(R.id.tv_title_0)
TextView tv_title_0;
@BindView(R.id.tv_source_0)
TextView tv_source_0;
@BindView(R.id.tv_time_0)
TextView tv_time_0;
@BindView(R.id.iv_img_1)
ImageView iv_img_1;
@BindView(R.id.tv_title_1)
TextView tv_title_1;
@BindView(R.id.tv_source_1)
TextView tv_source_1;
@BindView(R.id.tv_time_1)
TextView tv_time_1;
@BindView(R.id.iv_img_2)
ImageView iv_img_2;
@BindView(R.id.tv_title_2)
TextView tv_title_2;
@BindView(R.id.tv_source_2)
TextView tv_source_2;
@BindView(R.id.tv_time_2)
TextView tv_time_2;
@BindView(R.id.cardview_relative)
CardView cv_relative;
@BindView(R.id.layout_scroller)
NestedScrollView layout_scroller;
private Context context;
private String doc_id;
private String title;
private String img;
private ExploreDetailPresenterImpl presenter;
private ExploreDetailBean detailBean;
private List<ExploreDetailBean.RelativeSysBean> relativeSysList = new ArrayList<>();
public static ExploreDetailFragment newInstance(String doc_id, String title, String img) {
ExploreDetailFragment fragment = new ExploreDetailFragment();
Bundle args = new Bundle();
args.putString(DOC_ID, doc_id);
args.putString(TITLE, title);
args.putString(IMG, img);
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_explore_detail, container, false);
ButterKnife.bind(this, view);
context = view.getContext();
doc_id = getArguments().getString(DOC_ID);
title = getArguments().getString(TITLE);
img = getArguments().getString(IMG);
initView();
presenter.getExploreDetail(doc_id);
return attachToSwipeBack(view);
}
@SuppressLint("SetJavaScriptEnabled")
private void initView() {
//初始化MVP
presenter = new ExploreDetailPresenterImpl(this);
//设置ToolBar
tv_title.setText(title);
tv_title.setSelected(true);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
((AppCompatActivity) getActivity()).getSupportActionBar().setTitle(null);
toolbar.setNavigationIcon(R.drawable.ic_back_arrow_normal);
toolbar.setNavigationOnClickListener(view -> pop());
Glide.with(this).load(img).into(iv_appbar);
//设置RefreshLayout
//设置RecyclerView
//设置其他View
// 设置android下允许执行js的脚本
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "jsObj");
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress >= 80) {
layout_scroller.setVisibility(View.VISIBLE);
}
}
});
}
@Override
public void updateWebView(String html) {
// webView.loadData(html, "text/html", null);
webView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);
}
@Override
public void updateExploreDetail(ExploreDetailBean detailBean) {
this.detailBean = detailBean;
}
@Override
public void updateRelativeSys(List<ExploreDetailBean.RelativeSysBean> relative_sys) {
if (relative_sys.size() != 3) {
return;
}
relativeSysList = relative_sys;
cv_relative.setVisibility(View.VISIBLE);
tv_title_0.setText(relative_sys.get(0).getTitle());
tv_source_0.setText(relative_sys.get(0).getSource());
tv_time_0.setText(relative_sys.get(0).getPtime());
Glide.with(context).load(relative_sys.get(0).getImgsrc())
.centerCrop()
.crossFade()
.into(iv_img_0);
tv_title_1.setText(relative_sys.get(1).getTitle());
tv_source_1.setText(relative_sys.get(1).getSource());
tv_time_1.setText(relative_sys.get(1).getPtime());
Glide.with(context).load(relative_sys.get(1).getImgsrc())
.centerCrop()
.crossFade()
.into(iv_img_1);
tv_title_2.setText(relative_sys.get(2).getTitle());
tv_source_2.setText(relative_sys.get(2).getSource());
tv_time_2.setText(relative_sys.get(2).getPtime());
Glide.with(context).load(relative_sys.get(2).getImgsrc())
.centerCrop()
.crossFade()
.into(iv_img_2);
}
@Override
public void showError(String message) {
ToastUtils.showShortToast(message);
}
@OnClick({R.id.layout_relative_0, R.id.layout_relative_1, R.id.layout_relative_2})
public void onClick(View view) {
ExploreDetailBean.RelativeSysBean relativeSysBean;
switch (view.getId()) {
case R.id.layout_relative_0:
relativeSysBean = relativeSysList.get(0);
start(ExploreDetailFragment.newInstance(
relativeSysBean.getDocID(),
relativeSysBean.getTitle(),
relativeSysBean.getImgsrc()));
break;
case R.id.layout_relative_1:
relativeSysBean = relativeSysList.get(1);
start(ExploreDetailFragment.newInstance(
relativeSysBean.getDocID(),
relativeSysBean.getTitle(),
relativeSysBean.getImgsrc()));
break;
case R.id.layout_relative_2:
relativeSysBean = relativeSysList.get(2);
start(ExploreDetailFragment.newInstance(
relativeSysBean.getDocID(),
relativeSysBean.getTitle(),
relativeSysBean.getImgsrc()));
break;
}
}
private class JsInterface {
@JavascriptInterface
public void startGallaryOnAndroid(int index) {
Flowable.just(index)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(index1 -> {
Intent intent = new Intent(getActivity(), GalleryActivity.class);
ArrayList<String> imgList = new ArrayList<>();
for (ExploreDetailBean.ImgBean imgBean : detailBean.getImg()) {
imgList.add(imgBean.getSrc());
}
intent.putStringArrayListExtra(GalleryActivity.IMG_LIST, imgList);
intent.putExtra(GalleryActivity.INDEX, index1);
startActivity(intent);
});
}
}
}