package com.bigfat.androidltest;
import android.animation.Animator;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.transition.Explode;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.view.Window;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toolbar;
import com.bigfat.androidltest.model.Paper;
/**
* @author <a href="mailto:fbzhh007@gmail.com">bigfat</a>
* @since 2015/3/12
*/
public class DetailActivity extends Activity implements View.OnClickListener {
private Toolbar toolbar;
private ImageView imgPic;
private ImageButton imgBtnFloatButton;
private TextView tvName;
private TextView tvWork;
//主壁纸
private Paper paper;
//壁纸组当前索引
private int picIndex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//开启转场动画功能
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
//设置转场动画
getWindow().setEnterTransition(new Explode().setDuration(500));
getWindow().setExitTransition(null);
setContentView(R.layout.activity_detail);
int position = getIntent().getIntExtra("position", 0);
paper = MainActivity.paperList.get(position);
initView();
initToolbar();
initEvent();
//为imgPic设置与前一场景共享元素相同的TransitionName,系统就是根据TransitionName为共享元素配对的
imgPic.setTransitionName(position + "pic");
//设置界面内容
imgPic.setImageResource(paper.getPic());
tvName.setText(paper.getName());
tvWork.setText(paper.getWork());
}
private void initView() {
toolbar = (Toolbar) findViewById(R.id.tb_detail);
imgPic = (ImageView) findViewById(R.id.img_detail_pic);
imgBtnFloatButton = (ImageButton) findViewById(R.id.imgbtn_detail_float_button);
tvName = (TextView) findViewById(R.id.tv_detail_name);
tvWork = (TextView) findViewById(R.id.tv_detail_work);
}
private void initToolbar() {
setActionBar(toolbar);
ActionBar actionBar = getActionBar();
if (actionBar != null) {
getActionBar().setTitle(paper.getName());
actionBar.setSubtitle(paper.getWork());
}
}
private void initEvent() {
imgBtnFloatButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.imgbtn_detail_float_button://点击后切换当前组下一张壁纸
picIndex++;
//获取并设置壁纸
if (paper.getPicGroup() != null) {
if (picIndex > paper.getPicGroup().length - 1) {
picIndex = 0;
}
imgPic.setImageResource(paper.getPicGroup()[picIndex]);
}
//壁纸切换动画
Animator animator = createCircularRevealAnimatorRightBottom(imgPic);
animator.start();
break;
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
//返回键点击后将壁纸图片还原,要不然和MainActivity的共享元素图片不一样,过渡太违和了
imgPic.setImageResource(paper.getPic());
finishAfterTransition();
}
/**
* 获取壁纸图片切换动画
*/
private Animator createCircularRevealAnimatorRightBottom(View v) {
Animator animator = ViewAnimationUtils.createCircularReveal(v, imgBtnFloatButton.getLeft() + imgBtnFloatButton.getWidth() / 2, imgBtnFloatButton.getTop() + imgBtnFloatButton.getHeight() / 2, 0, v.getWidth());
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setDuration(300);
return animator;
}
}