Попробуйте использовать класс TranslateAnimation , который создает анимацию для изменения положения. Попробуйте прочитать это, чтобы получить помощь - http://developer.android.com/reference/android/view/animation/TranslateAnimation.html
Обновление: вот пример этого. Если у вас высота обзора 50, а в режиме скрытия вы хотите отображать только 10 пикселей. Пример кода будет -
TranslateAnimation anim=new TranslateAnimation(0,0,-40,0);
anim.setFillAfter(true);
view.setAnimation(anim);
PS: Есть много или других методов, которые помогут вам использовать анимацию в соответствии с вашими потребностями. Также обратите внимание на RelativeLayout.LayoutParams, если вы хотите полностью настроить код, однако с помощью TranslateAnimation проще использовать.
РЕДАКТИРОВАТЬ: -Сложная версия с использованием 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);
В этом примере кода предполагается, что вы помещаете свое представление в RelativeLayout, если не измените имя макета, однако другой макет может не работать. Если вы хотите создать для них эффект анимации, медленно уменьшайте или увеличивайте значение topMargin. Вы также можете рассмотреть возможность использования Thread.sleep ().
Попробуй это.
view.animate() .translationY(0) .alpha(0.0f) .setListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); view.setVisibility(View.GONE); } });
источник
Прежде всего, получите высоту представления, которое хотите увидеть, и сделайте логическое значение для сохранения, если представление отображается:
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)); } });
Затем вызовите метод для отображения скрытия представления и измените значение логического значения:
Метод:
/** * 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); } }
источник
ViewAnimator:
В 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>
Функции:
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); }
источник