我的应用中有一些按钮,我想在点击时按比例放大
为此我创建了一个选择器
selector_sms_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_sms_big" android:state_pressed="true"></item>
<item android:drawable="@drawable/ic_sms" android:state_pressed="false"></item>
</selector>
并声明我的按钮如下
<Button
android:id="@+id/sms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_sms_button" />
问题是 - 按钮在点击时不会增长
ic_sms_big的大小为300x300dp
,ic_sms的大小为72x72dp
如果我绝对不必要,我不想为他们创建动画文件。 问题是点击时按钮应该增长到其尺寸的至少3倍,而且它没有。
我该怎么做才能解决它?
编辑: 我的要求&#34;我不想创建一个动画文件&#34;并不意味着我不想为它创建XML文件,但我根本不想在代码中为它创建引用。 我有6个应该这样做的按钮
答案 0 :(得分:2)
如果您不想添加文件,可以通过编程方式执行
Animation anim = new ScaleAnimation(
1f, 1f, // Start and end values for the X axis scaling
startScale, endScale, // Start and end values for the Y axis scaling
Animation.RELATIVE_TO_SELF, 0f, // Pivot point of X scaling
Animation.RELATIVE_TO_SELF, 1f); // Pivot point of Y scaling
anim.setFillAfter(true); // Needed to keep the result of the animation
v.startAnimation(anim);
答案 1 :(得分:1)
解决方案是在较小版本的按钮中添加填充 它使用与较大图像完全相同的像素数量,但有大量填充,然后单击图像更改,图标显示增长
答案 2 :(得分:1)
要以编程方式实现它,您可以使用以下代码:
private void animateView() {
AnimationSet animationSet = new AnimationSet(true);
ScaleAnimation growAnimation = new ScaleAnimation(1.0f, 3.0f, 1.0f, 3.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
ScaleAnimation shrinkAnimation = new ScaleAnimation(3.0f, 1.0f, 3.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animationSet.addAnimation(growAnimation);
animationSet.addAnimation(shrinkAnimation);
animationSet.setDuration(200);
viewToAnimate.startAnimation(animationSet);
}
答案 3 :(得分:0)
尝试在较小的按钮上删除android:state_pressed =“false”:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_sms_big" android:state_pressed="true"></item>
<item android:drawable="@drawable/ic_sms" ></item>
</selector>
你也应该考虑这个:
答案 4 :(得分:0)
您应该在onClick方法中更改按钮的大小:
button.setLayoutParams (new LayoutParams(width, height));
答案 5 :(得分:0)
在按钮上尝试这样的事情
button.animate()
.setDuration(2000)
.scaleX(3.0f)
.scaleY(3.0f);
答案 6 :(得分:0)
Animation anim = new ScaleAnimation(
1f, 0.7f, // Start and end values for the X axis scaling
1f, 0.7f, // Start and end values for the Y axis scaling
Animation.RELATIVE_TO_SELF, 0.5f, // Pivot point of X scaling
Animation.RELATIVE_TO_SELF, 0.5f); // Pivot point of Y scaling
anim.setFillAfter(false); // Needed to keep the result of the animation
anim.setDuration(300);
iv_logo.startAnimation(anim);
使用此工具,我已经达到了预期的结果。 缩小将严格位于视图的中心。