Yükseklik düzenini programlı olarak animasyon olarak nasıl değiştirilir? İlkYükseklik düzenini animasyon olarak nasıl değiştirilir (programsal olarak)
:
sonra:
Yükseklik düzenini programlı olarak animasyon olarak nasıl değiştirilir? İlkYükseklik düzenini animasyon olarak nasıl değiştirilir (programsal olarak)
:
sonra:
Heey Amigo,
kodumu test ettikten sonra, ben küçük bir sorunu gördük. "scaleY"
kullandım çünkü bu sadece görünümü "uzatır". Bu, görünümde bir metin veya bir şey varsa, sadece gerecek ve hoş görünmeyecek demektir. Bunun yerine, onun eserleri daha pürüzsüz ValueAnimator
ile deneyin
public void onClick(View v)
{
if(!isBig){
ValueAnimator va = ValueAnimator.ofInt(100, 200);
va.setDuration(400);
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Integer value = (Integer) animation.getAnimatedValue();
v.getLayoutParams().height = value.intValue();
v.requestLayout();
}
});
va.start();
isBig = true;
}
else{
ValueAnimator va = ValueAnimator.ofInt(200, 100);
va.setDuration(400);
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Integer value = (Integer) animation.getAnimatedValue();
v.getLayoutParams().height = value.intValue();
v.requestLayout();
}
});
va.start();
isBig = false;
}
}
XML:
<RelativeLayout
android:layout_width="150dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:background="@android:color/holo_red_dark"
android:onClick="onButtonClick"
android:clickable="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="My Layout"/>
</RelativeLayout>
Eski Cevap Sen pivotY(0)
yüzden sadece geçer ayarlamak için sadece hatırlamak, ObjectAnimator kullanabilirsiniz alt. Gereksinimlerinizi karşılamak için kendinizle oynayın :)
private boolean isBig = false;
...
public void onClick(View v)
{
v.setPivotY(0f);
if(!isBig){
ObjectAnimator scaleY = ObjectAnimator.ofFloat(v, "scaleY", 2f);
scaleY.setInterpolator(new DecelerateInterpolator());
scaleY.start();
isBig = true;
}
else{
ObjectAnimator scaleY = ObjectAnimator.ofFloat(v, "scaleY", 1f);
scaleY.setInterpolator(new DecelerateInterpolator());
scaleY.start();
isBig = false;
}
}
tnx bebé ......;) –
Cevabı güncelledim. "ValueAnimator" öğesini kullanın, görünüm/düzen içinde başka bir metin veya başka bir şey varsa daha iyi çalışır –