package com.luciofm.droidcon.ifican.fragment;
import android.animation.ArgbEvaluator;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.transition.Fade;
import android.transition.TransitionManager;
import android.transition.TransitionSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.luciofm.droidcon.ifican.R;
import com.luciofm.droidcon.ifican.anim.TextTransform;
import com.luciofm.droidcon.ifican.util.Utils;
import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;
import pl.droidsonroids.gif.GifDrawable;
import pl.droidsonroids.gif.GifImageView;
/**
* A simple {@link android.app.Fragment} subclass.
*/
public class SmoothStateChangeFragment extends BaseFragment {
@InjectView(R.id.container)
LinearLayout container;
@InjectView(R.id.container2)
LinearLayout container2;
@InjectView(R.id.text1)
TextView text1;
@InjectView(R.id.gif1)
GifImageView gif1;
@InjectView(R.id.gif2)
GifImageView gif2;
int grey_light;
int pink;
public SmoothStateChangeFragment() {
}
@Override
public int getLayout() {
return R.layout.fragment_smooth_state_change;
}
@Override
public String getMessage() {
return "Never hide/show/mode/change state of elements without animation...";
}
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup parent, Bundle savedInstanceState) {
View v = super.onCreateView(inflater, parent, savedInstanceState);
ButterKnife.inject(this, v);
currentStep = 1;
grey_light = getResources().getColor(R.color.grey_light);
pink = getResources().getColor(R.color.pink);
Utils.stopGif(gif1, gif2);
Utils.resetGif(gif1, gif2);
return v;
}
@OnClick(R.id.container)
public void onClick() {
onNextPressed();
}
@Override
public void onNextPressed() {
switch (++currentStep) {
case 2:
TransitionSet set = new TransitionSet();
set.setOrdering(TransitionSet.ORDERING_SEQUENTIAL);
set.addTransition(new TextTransform()).addTransition(new Fade(Fade.IN));
TransitionManager.beginDelayedTransition(container, set);
container.setGravity(Gravity.TOP);
text1.setTextSize(60f);
text1.setTextColor(grey_light);
ObjectAnimator background = ObjectAnimator.ofObject(container, "backgroundColor",
new ArgbEvaluator(), grey_light, pink);
background.start();
break;
case 3:
container2.setVisibility(View.VISIBLE);
gif1.setVisibility(View.VISIBLE);
Utils.startGifDelayed(gif1);
break;
case 4:
gif2.setVisibility(View.VISIBLE);
Utils.stopGif(gif1);
Utils.startGifDelayed(gif2);
break;
case 5:
Utils.startGif(gif1);
break;
default:
super.onNextPressed();
}
}
@Override
public void onPrevPressed() {
if (--currentStep > 0) {
switch (currentStep) {
case 1:
super.onPrevPressed();
case 2:
Utils.stopGif(gif1);
gif1.setVisibility(View.GONE);
container2.setVisibility(View.GONE);
break;
case 3:
Utils.stopGif(gif2);
Utils.startGifDelayed(gif1);
gif2.setVisibility(View.GONE);
}
return;
}
super.onPrevPressed();
}
@OnClick({R.id.gif1, R.id.gif2})
public void onGifClick(GifImageView view) {
GifDrawable drawable = (GifDrawable) view.getDrawable();
if (drawable.isPlaying())
drawable.stop();
else
drawable.start();
}
}