package com.luciofm.droidcon.ifican.fragment;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextSwitcher;
import android.widget.TextView;
import com.luciofm.droidcon.ifican.R;
import com.luciofm.droidcon.ifican.anim.XFractionProperty;
import com.luciofm.droidcon.ifican.anim.YFractionProperty;
import com.luciofm.droidcon.ifican.util.IOUtils;
import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;
/**
* A simple {@link android.app.Fragment} subclass.
*
*/
public class LayoutTransitionsCodeFragment extends BaseFragment {
@InjectView(R.id.text1)
TextView text1;
@InjectView(R.id.textSwitcher)
TextSwitcher textSwitcher;
private int currentStep;
Spanned code1;
Spanned code2;
public LayoutTransitionsCodeFragment() {
}
@Override
public int getLayout() {
return R.layout.fragment_layout_transitions_code;
}
@Override
public String getMessage() {
return "";
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = super.onCreateView(inflater, container, savedInstanceState);
ButterKnife.inject(this, v);
currentStep = 1;
code1 = Html.fromHtml(IOUtils.readFile(getActivity(), "source/transitions.xml.html"));
code2 = Html.fromHtml(IOUtils.readFile(getActivity(), "source/transitions2.xml.html"));
textSwitcher.setInAnimation(getActivity(), android.R.anim.slide_in_left);
textSwitcher.setOutAnimation(getActivity(), android.R.anim.slide_out_right);
return v;
}
@Override
public void onNextPressed() {
switch (++currentStep) {
case 2:
text1.animate().scaleY(0.7f).scaleX(0.7f);
textSwitcher.setVisibility(View.VISIBLE);
textSwitcher.setText(code1);
break;
case 3:
textSwitcher.setText(code2);
break;
default:
super.onNextPressed();
}
}
@Override
public void onPrevPressed() {
if (--currentStep > 0) {
switch (currentStep) {
case 1:
text1.animate().scaleX(1f).scaleY(1f);
textSwitcher.setVisibility(View.GONE);
break;
case 2:
textSwitcher.setText(code1);
break;
}
return;
}
super.onPrevPressed();
}
@OnClick(R.id.container)
public void onClick() {
onNextPressed();
}
@Override
public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
if (transit == 0) {
return null;
}
//Target will be filled in by the framework
return enter ? ObjectAnimator.ofFloat(null, new XFractionProperty(), 1f, 0f)
: ObjectAnimator.ofFloat(null, new YFractionProperty(), 0f, -1f);
}
}