Как я могу изменить размеры представлений с анимацией, не деформируя содержимое внутри представления? - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу изменить размеры представлений с анимацией Android без деформации содержимого внутри представления.В частности, я хочу нажать на значок кластера в картах Google, изменить размер фрагмента карты и показать вид списка, вот мой код

public void showDataView(){
        RelativeLayout dataLinearLayout = getView().findViewById(R.id.dataLinearLayout);
        View map = getView().findViewById(R.id.map);

        if(isAnimationOn == 0) {
            isAnimationOn = 1;
            Animation anim = AnimationUtils.loadAnimation(getContext(), R.anim.minimize_maps);
            anim.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
                }

                @Override
                public void onAnimationEnd(Animation animation) {
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                }
            });
            map.startAnimation(anim);

            Animation anim2 = AnimationUtils.loadAnimation(getContext(), R.anim.maximize_maps);
            anim2.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    isAnimationOn = 1;
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                }
            });
            dataLinearLayout.startAnimation(anim2);
        }
    }

вот анимация XML

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false"
    android:fillAfter="true">
    <scale android:fromXScale="1.0" android:toXScale="1.0"
        android:fromYScale="1.0" android:toYScale="0.5"
        android:pivotX="50%p" android:pivotY="0%p"
        android:duration="250" />
</set>

посмотреть код

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="100"
    android:orientation="vertical">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="100"
        tools:context="com.viralandroid.googlemapsandroidapi.MapsActivity" />
    <RelativeLayout
        android:id="@+id/dataLinearLayout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="50">
    </RelativeLayout>
</LinearLayout>

И вот как это работает

enter image description here enter image description here

пожалуйста, если вызнаете что-нибудь, пожалуйста, помогите мне!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...