Масштабная анимация на составных чертежах Android - PullRequest
1 голос
/ 15 мая 2019

У меня есть RadioButton с drawableTop, установленным на LayerList.Это LayerList выглядит следующим образом

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/image_radio_button_bg_selector" />
            <size
                android:width="@dimen/imageRadioButtonDrawableSize"
                android:height="@dimen/imageRadioButtonDrawableSize" />
            <corners android:radius="@dimen/imageRadioButtonDrawableRadius" />
        </shape>
    </item>
<layer-list>

Я хочу иметь возможность анимировать этот чертеж, когда RadioButton отмечен или не отмечен.Drawable должен масштабироваться от 50% до 100%, когда RadioButton проверен, и наоборот в противном случае.Есть ли способ добавить анимацию в составной прорисовки?Особенно, когда оттягиваемый управляется Color Selector, а не Drawable Selector.(image_radio_button_bg_selector в моем случае)

Этот селектор цвета выглядит следующим образом

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="?attr/colorAccent" android:state_checked="true" />
    <item android:color="@android:color/white" android:state_checked="false" />
    <item android:color="@color/white" />
</selector>

1 Ответ

0 голосов
/ 15 мая 2019

Создать файл в res / anim / scale.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <scale
        android:pivotX="50%"     // anchor point in x-axis->
        android:pivotY="50%"     // anchor point in x-axis
        android:fromYScale="0.5" // from size Y axis
        android:fromXScale="0.5" // from size X axis
        android:interpolator="@android:anim/bounce_interpolator"
        android:toYScale="1.0"   // to size Y axis
        android:toXScale="1.0"   // to size X axis
        android:duration="250"/> // time of duration in milliseconds

</set>

Использование в файле активности

RadioGroup rGroup = (RadioGroup)findViewById(R.id.radioGroup);
RadioButton checkedRadioButton =(RadioButton)rGroup.findViewById(rGroup.getCheckedRadioButtonId());
rGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    public void onCheckedChanged(RadioGroup group, int checkedId) {
       RadioButton checkedRadioButton = (RadioButton)group.findViewById(checkedId);
       Animation bulge = AnimationUtils.loadAnimation(getApplication(), R.anim.scale);
                        checkedRadioButton.startAnimation(bulge);
    }
});
...