【发布时间】:2019-02-01 16:17:03
【问题描述】:
我刚刚在这篇文章 https://android.jlelse.eu/using-statelistanimators-to-create-instagram-like-animation-db2676c9391 之后创建了这个带有动画的复选框,当我从我的 java 代码中调用 checkbox.setChecked(true) 时它不起作用! 当我点击喜欢按钮时,我想要那个!如果不喜欢按钮被检查为真,那么它必须检查为假。当我点击不喜欢按钮时,如果喜欢被选中,那么它必须被选中! 这是复选框 XML 代码:
<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!
【问题讨论】:
标签: java android xml animation