package com.sjl.yuehu.ui.activity; import android.content.Intent; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.View; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; import com.jakewharton.rxbinding.view.RxView; import com.sjl.yuehu.R; import com.sjl.yuehu.data.bean.CollectBean; import com.sjl.yuehu.data.bean.WebBean; import com.sjl.yuehu.data.bean.WebExtraBean; import com.sjl.yuehu.mvp.presenter.WebViewPresenter; import com.sjl.yuehu.mvp.view.WebViewMvpView; import com.sjl.yuehu.ui.activity.CommentAct; import com.sjl.yuehu.ui.base.BaseAct; import com.sjl.yuehu.util.HtmlUtil; import javax.inject.Inject; import butterknife.Bind; import butterknife.ButterKnife; import io.realm.Realm; import io.realm.RealmResults; /** * Created by 小鹿 on 2017/2/10. */ public class WebViewAct extends BaseAct implements WebViewMvpView, View.OnClickListener { @Inject WebViewPresenter presenter; @Inject Realm realm; @Bind(R.id.web) WebView webView; @Bind(R.id.top_icon) ImageView topIcon; @Bind(R.id.title) TextView title; @Bind(R.id.session) TextView session; @Bind(R.id.fl) FrameLayout fl; @Bind(R.id.iv_like) ImageView ivLike; @Bind(R.id.tv_like_count) TextView tvLikeCount; @Bind(R.id.ll_like_count) LinearLayout llLikeCount; @Bind(R.id.tv_comment_count) TextView tvCommentCount; @Bind(R.id.ll_comment_count) LinearLayout llCommentCount; @Bind(R.id.collect) ImageView collect; @Bind(R.id.share) ImageView share; @Bind(R.id.toolbar) Toolbar toolbar; private int id; private WebExtraBean bean; private boolean isLike; private boolean isCollect; private WebBean data_realm; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActivityComponent().inject(this); setContentView(R.layout.web_fg); presenter.attachView(this); ButterKnife.bind(this); initToolbar(); init(); } private void initToolbar() { toolbar.setNavigationIcon(R.mipmap.ic_back_toolbar); toolbar.setNavigationOnClickListener(this); RxView.clicks(llCommentCount).subscribe(aVoid -> { // goComments(); }); RxView.clicks(llLikeCount).subscribe(aVoid -> { goCustomToa(); }); RxView.clicks(collect).subscribe(aVoid -> { goCollect(); }); } private void showCollect() { RealmResults<CollectBean> results = realm.where(CollectBean.class).findAll(); for (CollectBean item : results) { if (item.getId() == id) { isCollect = item.isCollect(); } } if (isCollect) { collect.setImageResource(R.mipmap.collect_toolbar); } else { collect.setImageResource(R.mipmap.nocollect_toolbar); } } private void goCollect() { if (isCollect) { collect.setImageResource(R.mipmap.nocollect_toolbar); cancelCollect(); isCollect=false; } else { collect.setImageResource(R.mipmap.collect_toolbar); startCollect(); isCollect=true; } } private void cancelCollect() { RealmResults<CollectBean> results = realm.where(CollectBean.class).equalTo("id", this.id).findAll(); realm.executeTransaction(realm1 -> results.deleteAllFromRealm()); } private void startCollect() { String imgurl; if(data_realm.getImages()!=null && data_realm.getImages().size()!=0){ imgurl = data_realm.getImages().get(0); } else { imgurl=null; } CollectBean cbean = new CollectBean(id, data_realm.getTitle(), imgurl, true); realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { realm.copyToRealmOrUpdate(cbean); } }); } private void goCustomToa() { isLike = !isLike; if (isLike) { ivLike.setImageResource(R.mipmap.praised_toolbar); tvLikeCount.setText((bean.getPopularity() + 1) + ""); } else { ivLike.setImageResource(R.mipmap.nopraise_toolbar); tvLikeCount.setText(bean.getPopularity() + ""); } } private void goComments() { Intent intent = new Intent(this, CommentAct.class); intent.putExtra("id", id); intent.putExtra("count", bean.getLong_comments() + bean.getShort_comments()); startActivity(intent); } private void init() { Intent intent = getIntent(); id = intent.getIntExtra("id", 0); if (id != 0) { presenter.onLoad(id); presenter.onLoadExtra(id); } WebSettings settings = webView.getSettings(); //设置缓存 settings.setDomStorageEnabled(true); settings.setAppCacheEnabled(true); settings.setDatabaseEnabled(true); settings.setJavaScriptEnabled(true); settings.setLoadWithOverviewMode(true); settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); settings.setSupportZoom(true); showCollect(); } @Override public void onLoad(WebBean bean) { this.data_realm = bean; if (bean != null) { if (bean.getImage() != null) { Glide.with(this) .load(bean.getImage()) .error(R.mipmap.bg_about) .into(topIcon); title.setText(bean.getTitle()); session.setText(bean.getImage_source()); } else { fl.setVisibility(View.GONE); } String htmlData = HtmlUtil.createHtmlData(bean.getBody(), bean.getCss(), bean.getJs()); webView.loadData(htmlData, HtmlUtil.MIME_TYPE, HtmlUtil.ENCODING); } } @Override public void onLoadExtra(WebExtraBean bean) { if (bean != null) { this.bean = bean; tvCommentCount.setText(bean.getComments() + ""); tvLikeCount.setText(bean.getPopularity() + ""); } } @Override public Toolbar getToolbar() { return toolbar; } @Override public void onClick(View v) { finish(); } }