Created
November 3, 2014 21:48
-
-
Save alexjlockwood/578c87f65b905ededfe7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class TextSizeTransition extends Transition { | |
private static final String PROPNAME_TEXT_SIZE = "propname_text_size"; | |
private static final String[] TRANSITION_PROPERTIES = { PROPNAME_TEXT_SIZE }; | |
private static final Property<TextView, Float> TEXT_SIZE = | |
new Property<TextView, Float>(Float.class, "textSize") { | |
@Override | |
public Float get(TextView textView) { | |
return textView.getTextSize(); | |
} | |
@Override | |
public void set(TextView textView, Float textSizePixels) { | |
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSizePixels); | |
} | |
}; | |
public TextSizeTransition() { | |
} | |
public TextSizeTransition(Context context, AttributeSet attrs) { | |
super(context, attrs); | |
} | |
@Override | |
public String[] getTransitionProperties() { | |
return TRANSITION_PROPERTIES; | |
} | |
@Override | |
public void captureStartValues(TransitionValues transitionValues) { | |
captureValues(transitionValues); | |
} | |
@Override | |
public void captureEndValues(TransitionValues transitionValues) { | |
captureValues(transitionValues); | |
} | |
private void captureValues(TransitionValues transitionValues) { | |
final View view = transitionValues.view; | |
if (view instanceof TextView) { | |
final TextView textView = (TextView) view; | |
transitionValues.values.put(PROPNAME_TEXT_SIZE, textView.getTextSize()); | |
} | |
} | |
@Override | |
public Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) { | |
if (startValues == null || endValues == null) { | |
return null; | |
} | |
Float startSize = (Float) startValues.values.get(PROPNAME_TEXT_SIZE); | |
Float endSize = (Float) endValues.values.get(PROPNAME_TEXT_SIZE); | |
if (startSize == null || endSize == null || | |
startSize.floatValue() == endSize.floatValue()) { | |
return null; | |
} | |
TextView view = (TextView) endValues.view; | |
view.setTextSize(TypedValue.COMPLEX_UNIT_PX, startSize); | |
return ObjectAnimator.ofFloat(view, TEXT_SIZE, startSize, endSize); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment