package com.jaydenxiao.androidfire.ui.news.activity; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.animation.DecelerateInterpolator; import android.widget.RelativeLayout; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.jaydenxiao.androidfire.R; import com.jaydenxiao.androidfire.app.AppConstant; import com.jaydenxiao.androidfire.utils.MyUtils; import com.jaydenxiao.androidfire.utils.SystemUiVisibilityUtil; import com.jaydenxiao.androidfire.widget.PullBackLayout; import com.jaydenxiao.common.commonwidget.StatusBarCompat; import butterknife.Bind; import butterknife.ButterKnife; import uk.co.senab.photoview.PhotoView; import uk.co.senab.photoview.PhotoViewAttacher; /** * des:大图详情 * Created by xsf * on 2016.09.14:35 */ public class PhotosDetailActivity extends AppCompatActivity implements PullBackLayout.Callback { @Bind(R.id.photo_touch_iv) PhotoView photoTouchIv; @Bind(R.id.pull_back_layout) PullBackLayout pullBackLayout; @Bind(R.id.toolbar) Toolbar toolbar; @Bind(R.id.background) RelativeLayout background; private boolean mIsToolBarHidden; private boolean mIsStatusBarHidden; private ColorDrawable mBackground; public static void startAction(Context context,String url){ Intent intent = new Intent(context, PhotosDetailActivity.class); intent.putExtra(AppConstant.PHOTO_DETAIL,url); context.startActivity(intent); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); StatusBarCompat.translucentStatusBar(this); setContentView(R.layout.act_photo_detail); ButterKnife.bind(this); initView(); } @Override protected void onDestroy() { super.onDestroy(); ButterKnife.unbind(this); } public void initView() { pullBackLayout.setCallback(this); toolBarFadeIn(); initToolbar(); initBackground(); loadPhotoIv(); initImageView(); setPhotoViewClickEvent(); } private void initToolbar() { toolbar.setTitle(getString(R.string.girl)); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { finish(); } }); } private void initImageView() { loadPhotoIv(); } private void loadPhotoIv() { String url = getIntent().getStringExtra(AppConstant.PHOTO_DETAIL); Glide.with(this).load(url) .diskCacheStrategy(DiskCacheStrategy.ALL) .error(com.jaydenxiao.common.R.drawable.ic_empty_picture) .crossFade().into(photoTouchIv); } private void setPhotoViewClickEvent() { photoTouchIv.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() { @Override public void onPhotoTap(View view, float v, float v1) { hideOrShowToolbar(); hideOrShowStatusBar(); } }); } private void initBackground() { mBackground = new ColorDrawable(Color.BLACK); MyUtils.getRootView(this).setBackgroundDrawable(mBackground); } protected void hideOrShowToolbar() { toolbar.animate() .alpha(mIsToolBarHidden ? 1.0f : 0.0f) .setInterpolator(new DecelerateInterpolator(2)) .start(); mIsToolBarHidden = !mIsToolBarHidden; } private void hideOrShowStatusBar() { if (mIsStatusBarHidden) { SystemUiVisibilityUtil.enter(PhotosDetailActivity.this); } else { SystemUiVisibilityUtil.exit(PhotosDetailActivity.this); } mIsStatusBarHidden = !mIsStatusBarHidden; } private void toolBarFadeIn() { mIsToolBarHidden = true; hideOrShowToolbar(); } @Override public void onPullStart() { toolBarFadeOut(); mIsStatusBarHidden = true; hideOrShowStatusBar(); } private void toolBarFadeOut() { mIsToolBarHidden = false; hideOrShowToolbar(); } @Override public void onPull(float progress) { progress = Math.min(1f, progress * 3f); mBackground.setAlpha((int) (0xff/*255*/ * (1f - progress))); } @Override public void onPullCancel() { toolBarFadeIn(); } @Override public void onPullComplete() { supportFinishAfterTransition(); } @Override public void supportFinishAfterTransition() { super.supportFinishAfterTransition(); } }