android - 在 Compound Drawables Android 上缩放动画
问题描述
我有 a RadioButton
,它的drawableTop
设置为 a 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设置动画。当 RadioButton 被选中时,Drawable 需要从 50% 缩放到 100%,反之亦然。有没有办法在复合绘图中添加动画?特别是当 drawable 由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>
解决方案
在 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);
}
});
推荐阅读
- reactjs - 如何使用 craco 修改 antd LESS 变量?
- java - 在数据域之间转换值
- xml - 无法使用 bs4 解析 ISO-8859-15 编码的 XML
- javascript - 通过 AppleScript 使用 Javascript 获取图像尺寸
- swift - 将文本字段数据转换为十进制值并返回字符串
- excel - 如何使我的代码更短/更高效
- dataframe - 将 pyspark 连接到 ignite
- web-scraping - 如何让 3 个不同的类元素以表格行顺序显示在单个备注字段中
- swift - 从亚马逊 aws s3 存储桶将照片下载到 ios 应用程序时出错
- javascript - Javascript 正则表达式,匹配包含在括号中