package uk.co.imallan.tuchongdaily.ui.activity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.text.TextUtils;
import android.transition.Slide;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.squareup.picasso.Callback;
import com.squareup.picasso.Picasso;
import uk.co.imallan.tuchongdaily.R;
import uk.co.imallan.tuchongdaily.utils.ImageUtils;
/**
* Created by allan on 15/2/27.
*/
public class ImageActivity extends AbstractActivity implements View.OnClickListener {
private static final String EXTRA_IMAGE_URL = "EXTRA_IMAGE_URL";
private static final String EXTRA_IMAGE_CAMERA_INFO = "EXTRA_IMAGE_CAMERA_INFO";
private static final String EXTRA_IMAGE_LENS_INFO = "EXTRA_IMAGE_LENS_INFO";
private ImageView mImageView;
private TextView mCameraInfo;
private TextView mLensInfo;
private View mRootView;
public static void startActivity(Context context, String imageURL, String cameraInfo, String lensInfo, View sharedView) {
Intent intent = new Intent(context, ImageActivity.class);
intent.putExtra(EXTRA_IMAGE_URL, imageURL);
intent.putExtra(EXTRA_IMAGE_CAMERA_INFO, cameraInfo);
intent.putExtra(EXTRA_IMAGE_LENS_INFO, lensInfo);
ActivityOptionsCompat options;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
options = ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) context, sharedView, context.getString(R.string.share_hero));
} else {
options = ActivityOptionsCompat.makeScaleUpAnimation(sharedView, 0, 0, sharedView.getWidth(), sharedView.getHeight());
}
if (!TextUtils.isEmpty(imageURL)) {
intent.putExtra(EXTRA_IMAGE_URL, imageURL);
} else {
throw new RuntimeException("You must provide an image url");
}
ActivityCompat.startActivity((Activity) context, intent, options.toBundle());
}
@Override
boolean prepareServiceReceiver() {
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
initTransitions();
initElements();
String imageURL = getIntent().getStringExtra(EXTRA_IMAGE_URL);
String cameraInfoText = getIntent().getStringExtra(EXTRA_IMAGE_CAMERA_INFO);
String lensInfoText = getIntent().getStringExtra(EXTRA_IMAGE_LENS_INFO);
if (!TextUtils.isEmpty(cameraInfoText)) {
mCameraInfo.setText(cameraInfoText);
}
if (!TextUtils.isEmpty(lensInfoText)) {
mLensInfo.setText(lensInfoText);
}
Picasso.with(this).load(imageURL).noPlaceholder().noFade()
.transform(new ImageUtils.LimitImageSizeTransformation(ImageUtils.LimitImageSizeTransformation.QUALITY.QUALITY_1080P))
.into(mImageView, new Callback() {
@Override
public void onSuccess() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
startPostponedEnterTransition();
}
}
@Override
public void onError() {
}
});
}
private void initElements() {
mRootView = findViewById(R.id.root_view_activity_image);
mImageView = (ImageView) findViewById(R.id.image_view_image);
mCameraInfo = (TextView) findViewById(R.id.text_image_camera_info);
mLensInfo = (TextView) findViewById(R.id.text_image_lens_info);
mImageView.setOnClickListener(this);
mRootView.setOnClickListener(this);
}
private void initTransitions() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Slide slideInBottom = new Slide();
slideInBottom.addTarget(R.id.text_image_camera_info);
slideInBottom.addTarget(R.id.text_image_lens_info);
slideInBottom.setStartDelay(300);
getWindow().setEnterTransition(slideInBottom);
Slide slide = new Slide();
slide.addTarget(R.id.text_image_camera_info);
slide.addTarget(R.id.text_image_lens_info);
getWindow().setReturnTransition(slide);
postponeEnterTransition();
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.root_view_activity_image:
case R.id.image_view_image:
onBackPressed();
break;
}
}
}