Android: slideUp y slideDown de views

Este código lo usé hace un par de años y lo tenía como borrador en el panel de WordPress porque supongo que en su día quería escribir algo, acabo de darme cuenta y por eso lo publico.

Con él se pueden preparar acordeones o zonas de información adicional que en primera instancia estén ocultas, por ejemplo. Me gustaría poder escribir algo más sobre esto, pero en realidad es suficientemente sencillo, tanto el código como el concepto, así que no puedo decir gran cosa : )

public static void slideDown(final View v) {
    v.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    final int targetHeight = v.getMeasuredHeight();

    // En versiones anteriores a la 21, si el alto es < 1 se detiene la animación:
    v.getLayoutParams().height = 1;

    v.setVisibility(View.VISIBLE);

    Animation a = new Animation(){
        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) {
            v.getLayoutParams().height = interpolatedTime == 1 ? ViewGroup.LayoutParams.WRAP_CONTENT : (int)(targetHeight * interpolatedTime);
            v.requestLayout();
        }

        @Override
        public boolean willChangeBounds() {
            return true;
        }
    };

    int dps = (int)(targetHeight / v.getContext().getResources().getDisplayMetrics().density);

    a.setInterpolator(new AccelerateDecelerateInterpolator());
    a.setDuration(4 * dps);
    v.startAnimation(a);
}
public static void slideUp(final View v) {
    final int initialHeight = v.getMeasuredHeight();

    Animation a = new Animation(){
        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) {
            if(interpolatedTime == 1){
                v.setVisibility(View.GONE);
            }else{
                v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime);
                v.requestLayout();
            }
        }

        @Override
        public boolean willChangeBounds() {
            return true;
        }
    };

    int dps = (int)(initialHeight / v.getContext().getResources().getDisplayMetrics().density);

    a.setInterpolator(new AccelerateDecelerateInterpolator());
    a.setDuration(4 * dps);

    v.startAnimation(a);
}

Comentarios (1)

buenas noches queria saber si me podias ayudaren una aplicacion que estoy creando necesito saber como puedo hcer una llamada desde la aplicacion utilizando una imagen butoon en este caso la imagen seria un microfono donde podemos decir una palabra clave y que en automatico haga la llamada

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.