package io.c0nnector.github.paradise.ui.views;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
/**
* Animate textview expansion(max lines)
*/
public class ExpandableTextView extends TextView {
private static final int DEFAULT_MAX_LINES_COLLAPSE = 3;
private static final int DEFAULT_MAX_LINES_EXPAND = 50;
public ExpandableTextView(Context context) {
super(context);
}
public ExpandableTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* Will animate the max lines allowed in the textview
* @param lines
*/
private void animateMaxLines(int lines){
ObjectAnimator animation = ObjectAnimator.ofInt(this, "maxLines", lines);
animation.setDuration(200).start();
}
public void expand(){
expand(DEFAULT_MAX_LINES_EXPAND);
}
public void expand(int lines){
animateMaxLines(lines);
}
public void collapse(){
collapse(DEFAULT_MAX_LINES_COLLAPSE);
}
public void collapse(int lines){
animateMaxLines(lines);
}
/**
* Toggles argument values.
* E.g if the lines currently set are maxLinesExpand, then we set the lines to maxLinesCollapse
* @param maxLinesExpand
* @param maxLinesCollapse
*/
public void toggle(int maxLinesExpand, int maxLinesCollapse){
if (this.getMaxLines() == maxLinesExpand) {
collapse(maxLinesCollapse);
}
else if (this.getMaxLines() == maxLinesCollapse) {
collapse(maxLinesExpand);
}
}
}