package info.guardianproject.pixelknot.views;
import android.content.Context;
import android.support.design.widget.TextInputEditText;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
public class FadingEditText extends TextInputEditText {
public interface OnBackListener {
boolean onBackPressed(FadingEditText textView);
}
private OnBackListener mOnBackListener;
public FadingEditText(Context context) {
super(context);
}
public FadingEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FadingEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void setOnBackListener(OnBackListener listener) {
mOnBackListener = listener;
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
if (mOnBackListener != null) {
if (mOnBackListener.onBackPressed(this))
return true; // dont close keyboard
}
}
return super.onKeyPreIme(keyCode, event);
}
@Override
public void setVisibility(int visibility) {
int oldVisibility = getVisibility();
if (visibility != oldVisibility) {
if (visibility == View.VISIBLE) {
showView();
} else if (visibility == View.INVISIBLE) {
hideView(false);
} else {
hideView(true);
}
}
}
private void showView() {
Animation animAlpha = new AlphaAnimation(0, 1);
animAlpha.setInterpolator(new AccelerateInterpolator());
animAlpha.setDuration(1000);
animAlpha.setAnimationListener(new Animation.AnimationListener()
{
public void onAnimationEnd(Animation animation)
{
}
public void onAnimationRepeat(Animation animation) {}
public void onAnimationStart(Animation animation) {
}
});
setEnabled(true);
FadingEditText.super.setVisibility(View.VISIBLE);
startAnimation(animAlpha);
}
private void hideView(final boolean setToGone) {
Animation animAlpha = new AlphaAnimation(1, 0);
animAlpha.setInterpolator(new AccelerateInterpolator());
animAlpha.setDuration(1000);
animAlpha.setAnimationListener(new Animation.AnimationListener()
{
public void onAnimationEnd(Animation animation)
{
if (setToGone)
FadingEditText.super.setVisibility(View.GONE);
else
FadingEditText.super.setVisibility(View.INVISIBLE);
}
public void onAnimationRepeat(Animation animation) {}
public void onAnimationStart(Animation animation) {
}
});
setEnabled(false);
startAnimation(animAlpha);
}
}