package com.smartalk.gank.ui.activity; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v4.view.ViewCompat; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.smartalk.gank.PanConfig; import com.smartalk.gank.R; import com.smartalk.gank.ShareElement; import com.smartalk.gank.model.entity.Meizi; import com.smartalk.gank.presenter.MeizhiPresenter; import com.smartalk.gank.ui.base.ToolBarActivity; import com.smartalk.gank.utils.DateUtil; import com.smartalk.gank.utils.FileUtil; import com.smartalk.gank.utils.TipsUtil; import com.smartalk.gank.view.IMeizhiView; import butterknife.Bind; import butterknife.ButterKnife; import uk.co.senab.photoview.PhotoViewAttacher; public class MeizhiActivity extends ToolBarActivity<MeizhiPresenter> implements IMeizhiView { Meizi meizi; PhotoViewAttacher attacher; MeizhiPresenter presenter; Bitmap girl; @Bind(R.id.iv_meizhi) ImageView ivMeizhi; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ButterKnife.bind(this); } @Override protected int provideContentViewId() { return R.layout.activity_meizhi; } @Override protected void initPresenter() { presenter = new MeizhiPresenter(this, this); presenter.init(); } private void getIntentData() { meizi = (Meizi) getIntent().getSerializableExtra(PanConfig.MEIZI); } @Override protected void onDestroy() { super.onDestroy(); ShareElement.shareDrawable = null; presenter.release(); attacher.cleanup(); } @Override public void init() { appBar.setAlpha(0.6f); getIntentData(); initMeizhiView(); } private void initMeizhiView() { setTitle(DateUtil.toDateTimeStr(meizi.publishedAt)); ivMeizhi.setImageDrawable(ShareElement.shareDrawable); ViewCompat.setTransitionName(ivMeizhi, PanConfig.TRANSLATE_GIRL_VIEW); attacher = new PhotoViewAttacher(ivMeizhi); Glide.with(this).load(meizi.url).asBitmap().into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { ivMeizhi.setImageBitmap(resource); attacher.update(); girl = resource; } @Override public void onLoadFailed(Exception e, Drawable errorDrawable) { ivMeizhi.setImageDrawable(errorDrawable); } }); attacher.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() { @Override public void onPhotoTap(View view, float x, float y) { hideOrShowToolBar(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_girl, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_save: if (!FileUtil.isSDCardEnable() || girl == null) { TipsUtil.showSnackTip(ivMeizhi, getString(R.string.girl_reject_your_request)); } else { presenter.saveMeizhiImage(girl, DateUtil.toDateString(meizi.publishedAt).toString()); } break; case R.id.action_share: presenter.shareGirlImage(girl, DateUtil.toDateString(meizi.publishedAt).toString()); break; } return super.onOptionsItemSelected(item); } @Override public void showSaveGirlResult(String result) { TipsUtil.showSnackTip(ivMeizhi, result); } }