2013-08-09 4 views
4

Я хочу, чтобы относительный макет был увеличен, а нижняя часть обзора должна быть исправлена.
У меня есть относительное расположение -Android - ObjectAnimator установленное значение поворота

private RelativeLayout rlOutdoorSection; 

инициализируется это -

rlOutdoorSection = (RelativeLayout) findViewById(R.id.rlOutdoorSection); 

Создал ObjectAnimator -

scaleUpOutdoor = ObjectAnimator.ofFloat(rlOutdoorSection, "scaleY", 1f, 
      2.6f); 
    scaleUpOutdoor.setDuration(3000); 

начать анимацию -

scaleDownOutdoor.start(); 

В настоящее время представление становится масштабированным со значениями поворота в центре представления.

Как я могу обеспечить, чтобы вид был масштабирован, а нижняя часть фиксированного вида?

Спасибо заранее.

ответ

8

Сначала мы должны рассчитать HEIGHT из представления -

iOutdoorCompressedHeight = rlOutdoorSection.getMeasuredHeight(); 

Используйте этот height как стержень, вокруг которого вид должен масштабироваться.

rlOutdoorSection.setPivotX(0f); 
rlOutdoorSection.setPivotY(iOutdoorCompressedHeight); 

Уловкой здесь может быть измеренная высота обзора.
В Activity вычислить высоту в

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
    super.onWindowFocusChanged(hasFocus); 
    // Here calculate the height/width 
} 

В виде FRAGMENT использования обрамления listener-

rlOutdoorSection = (RelativeLayout) vMain 
      .findViewById(R.id.rlOutdoorSection); 
    ViewTreeObserver vtoOutdoor = rlIndoorSection.getViewTreeObserver(); 
    vtoOutdoor.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

     @Override 
     public void onGlobalLayout() { 
      iOutdoorCompressedHeight = rlOutdoorSection.getMeasuredHeight(); 
      rlOutdoorSection.setPivotX(0f); 
      rlOutdoorSection.setPivotY(iOutdoorCompressedHeight); 

     } 
    }); 

Надеется, что это поможет кто-то.