Bez włączania layoutParams, czy istnieje inny sposób zmiany rozmiaru, zwinięcia lub rozwinięcia widoku? Widziałem te animacje w niektórych widokach nowego Material Design i nowej aplikacji Android Dialer. Google powiedział, że materiał łatwo zmienia kształt, rozmiar, obrót, kolor itp., Ale nie mogę znaleźć niczego.Animacja rozmiaru widoku w materiale projektu
Czy istnieje kompatybilność wsteczna?
Do tej pory w celu zmiany rozmiaru, zwinąć lub rozwinąć widok Musieliśmy pracować z layoutParams tak na przykład:
public static void collapse(final View v) {
final int initialHeight = v.getMeasuredHeight();
Animation a = new Animation()
{
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
if(interpolatedTime == 1){
v.setVisibility(View.GONE);
}else{
v.getLayoutParams().height = initialHeight - (int)(initialHeight * interpolatedTime);
v.requestLayout();
}
}
@Override
public boolean willChangeBounds() {
return true;
}
};
a.setDuration((int)(initialHeight/v.getContext().getResources().getDisplayMetrics().density));
v.startAnimation(a);
}
Oto przykład tego, co chcę od nowa Google Android App Dialer:
Korzystanie 'scaleY (..)' nie ma wpływu na układ . Zmieni się tylko widoczny rozmiar elementu, ale nie ilość miejsca zajmowana przez widok w układzie. – Gareth
Yup, właściwość 'PropertyValuesHolder' byłaby lepszą opcją – user3285324