jeudi 7 mai 2015

Resize frame layout after value animator animation

I've faced serious problem, which I couldn't solve for hours. I have host activity with relativeLayout header and frameLayout below it for fragment. [RelativeLayout] [FrameLayout

]. I need to hide relative layout when keyboard appears, and show it when it hides with animation. I solved that problem in that way:

ValueAnimator animator = ValueAnimator.ofFloat(1.0f, 0.0f);
  animator.setDuration(250);
  animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
   @Override
   public void onAnimationUpdate(ValueAnimator valueAnimator) {
    int offset = (int) (mHeaderLayout.getHeight());
    float value = (Float) valueAnimator.getAnimatedValue();
    LinearLayout.LayoutParams headerParams = (LinearLayout.LayoutParams) mHeaderLayout
  .getLayoutParams();
    LinearLayout.LayoutParams fragmentParams = (LinearLayout.LayoutParams) mFragmentLayout
  .getLayoutParams();
headerParams.setMargins(0, (int) (-1 * value * offset), 0,
  (int) (value * offset));
    fragmentParams.setMargins(0, (int) (-1 * value * offset), 0,
  (int) (value * offset));
    mHeaderLayout.setLayoutParams(headerParams);
    mFragmentLayout.setLayoutParams(fragmentParams);
   }
  });

animator.start();

But I've faced the problem, when keyboard appears, there is extra space which I need to fill,(height of RelativeLayout) due to moving layout.

Aucun commentaire:

Enregistrer un commentaire