Intente usar la clase TranslateAnimation , que crea la animación para los cambios de posición. Intente leer esto para obtener ayuda: http://developer.android.com/reference/android/view/animation/TranslateAnimation.html
Actualización: aquí está el ejemplo para esto. Si tiene la altura de su vista como 50 y en el modo de ocultar desea mostrar solo 10 px. El código de muestra sería:
TranslateAnimation anim=new TranslateAnimation(0,0,-40,0);
anim.setFillAfter(true);
view.setAnimation(anim);
PD: Hay muchos métodos u otros que le ayudarán a utilizar la animación de acuerdo con sus necesidades. También eche un vistazo a RelativeLayout.LayoutParams si desea personalizar completamente el código, sin embargo, usar TranslateAnimation es más fácil de usar.
EDITAR: -Versión compleja usando LayoutParams
RelativeLayout relParam=new RelativeLayout.LayoutParam(RelativeLayout.LayoutParam.FILL_PARENT,RelativeLayout.LayoutParam.WRAP_CONTENT); //you can give hard coded width and height here in (width,height) format.
relParam.topMargin=-50; //any number that work.Set it to 0, when you want to show it.
view.setLayoutParams(relparam);
Este código de ejemplo asume que está poniendo su vista en RelativeLayout, si no cambia el nombre de Layout, sin embargo, es posible que otro diseño no funcione. Si desea darles un efecto de animación, reduzca o aumente el topMargin lentamente. También puede considerar usar Thread.sleep () allí.
Prueba esto.
view.animate() .translationY(0) .alpha(0.0f) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); view.setVisibility(View.GONE); } });
fuente
En primer lugar, obtenga la altura de la vista que desea ver y cree un valor booleano para guardar si la vista se muestra:
int heigth=0; boolean showing=false; LinearLayout layout = (LinearLayout) view.findViewById(R.id.layout); proDetailsLL.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // gets called after layout has been done but before display // so we can get the height then hide the view proHeight = proDetailsLL.getHeight(); // Ahaha! Gotcha proDetailsLL.getViewTreeObserver().removeGlobalOnLayoutListener(this); proDetailsLL.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0)); } });
Luego llame al método para mostrar ocultar la vista y cambie el valor del booleano:
El método:
/** * Method to slide in out the layout * * @param isShowing * if the layout is showing * @param height * the height to slide * @param slideLL * the container to show */ private void slideInOutAnimation(boolean isShowing, int height, final LinearLayout slideLL, final ImageView arroIV) { if (!isShowing) { Animation animIn = new Animation() { protected void applyTransformation(float interpolatedTime, Transformation t) { super.applyTransformation(interpolatedTime, t); // Do relevant calculations here using the interpolatedTime that runs from 0 to 1 slideLL.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, (int) (heigth * interpolatedTime))); } }; animIn.setDuration(500); slideLL.startAnimation(animIn); } else { Animation animOut = new Animation() { protected void applyTransformation(float interpolatedTime, Transformation t) { super.applyTransformation(interpolatedTime, t); // Do relevant calculations here using the interpolatedTime that runs from 0 to 1 slideLL.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, (int) (heigth * (1 - interpolatedTime)))); } }; animOut.setDuration(500); slideLL.startAnimation(animOut); } }
fuente
ViewAnimator:
En XML:
<ViewAnimator android:id="@+id/animator_message" android:layout_width="match_parent" android:layout_height="match_parent" android:inAnimation="@anim/slide_down_text" android:outAnimation="@anim/slide_up_text"> <TextView android:id="@+id/text_message_authentication" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="message_error_authentication" /> <TextView android:id="@+id/text_message_authentication_connection" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="message_error_authentication_connection" /> <TextView android:id="@+id/text_message_authentication_empty" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="message_error_authentication_field_empty" /> </ViewAnimator>
Funciones:
public void show(int viewId) { ViewAnimator animator = (ViewAnimator) findView(animatorId); View view = findViewById(viewId); if (animator.getDisplayedChild() != animator.indexOfChild(view)) { animator.setDisplayedChild(animator.indexOfChild(view)); } } private void showAuthenticationConnectionFailureMessage() { show(R.id.text_message_authentication_connection); }
fuente