Флажок не работает в Android с анимацией - PullRequest
0 голосов
/ 01 февраля 2019

Я только что создал этот флажок с анимацией после этой статьи https://android.jlelse.eu/using-statelistanimators-to-create-instagram-like-animation-db2676c9391, и он не работает, когда я вызываю checkbox.setChecked (true) из моего кода Java!Я хочу это, когда я нажимаю на кнопку «Мне нравится»!Если dislikeButton был проверен как true, тогда он должен быть проверен как false.И когда я нажимаю кнопку «Мне не нравится», если «лайк» отмечен как «истина», то должен быть отмечен «ложь»Вот XML-код checkBox:

<CheckBox
                android:layout_toLeftOf="@+id/save_btn"
                android:id="@+id/dislike_btn"
                android:layout_marginHorizontal="12dp"
                android:background="@drawable/dislike_icon"
                android:alpha="0.8"
                android:layout_width="24dp"
                android:layout_height="24dp"
                android:clickable="true"
                android:button="@null"
                android:stateListAnimator="@animator/like_animation"

                android:focusable="true"
                />
            <CheckBox
                android:layout_toLeftOf="@+id/dislike_btn"
                android:id="@+id/like_btn"
                android:layout_marginHorizontal="12dp"
                android:background="@drawable/like_icon"
                android:alpha="0.8"
                android:layout_width="24dp"
                android:layout_height="24dp"
                android:clickable="true"
                android:button="@null"
                android:stateListAnimator="@animator/like_animation"
                android:focusable="true"
                />

, а вот код like_icon и dislike_icon:

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

    <item android:state_checked="true"
        android:drawable="@drawable/dislike_icon_red"/>
    <item android:state_checked="false"
        android:drawable="@drawable/dislike_icon_black"/>

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

    <item android:state_checked="true"
        android:drawable="@drawable/thumps_up_red"/>
    <item android:state_checked="false"
        android:drawable="@drawable/thumps_up_black"/>

</selector>

и код анимации:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <set xmlns:android="http://schemas.android.com/apk/res/android">
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="scaleX"
                android:valueTo="1.525"
                android:valueType="floatType" />
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="scaleY"
                android:valueTo="1.525"
                android:valueType="floatType" />
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="translationZ"
                android:valueTo="4dp"
                android:valueType="floatType" />

            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="scaleX"
                android:valueTo="1.0"
                android:startOffset="@android:integer/config_shortAnimTime"
                android:valueType="floatType" />
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="scaleY"
                android:startOffset="@android:integer/config_shortAnimTime"
                android:valueTo="1.0"
                android:valueType="floatType" />
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="translationZ"
                android:startOffset="@android:integer/config_shortAnimTime"
                android:valueTo="0dp"
                android:valueType="floatType" />

        </set>

    </item>

    <item>
        <set>
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="scaleX"
                android:valueTo="1.525"
                android:valueType="floatType" />
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="scaleY"
                android:valueTo="1.525"
                android:valueType="floatType" />
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="translationZ"
                android:valueTo="4dp"
                android:valueType="floatType" />

            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="scaleX"
                android:valueTo="1.0"
                android:startOffset="@android:integer/config_shortAnimTime"
                android:valueType="floatType" />
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="scaleY"
                android:startOffset="@android:integer/config_shortAnimTime"
                android:valueTo="1.0"
                android:valueType="floatType" />
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="translationZ"
                android:startOffset="@android:integer/config_shortAnimTime"
                android:valueTo="0dp"
                android:valueType="floatType" />
        </set>
    </item>
</selector>

, и эточто я звоню из моего кода Java!

like.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        if (like.isChecked()){
            Log.i("ELA","like check called");
            dislike.setChecked(false);
        }
    }
});
dislike.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        if (dislike.isChecked()){
            like.setChecked(false);
        }
    }
});

Я тоже попробовал .setOnClickListener!

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