我需要旋转ImageButton的可绘制资源。我已成功将功能旋转到Button,但旋转功能会影响整个按钮。我想做的只是在ImageButton中只旋转drawable。
如何处理这种情况? PS:我在ImageButton中访问了drawable,但是我无法提供任何动画功能。
感谢帮助
这是我的ImageButton xml;
<ImageButton
android:id="@+id/button"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:layout_marginTop="-40dp"
android:background="@color/titlebackground_color"
android:src="@drawable/open" />
先旋转xml;
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<rotate
android:fromDegrees="-180"
android:toDegrees="-360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="500"
android:startOffset="0"
/>
</set>
旋转第二个xml;
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<rotate
android:fromDegrees="-180"
android:toDegrees="-0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="500"
android:startOffset="0"
/>
</set>
动画功能;
public class LayerInfoFragment extends Fragment {
int count = 0;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.layer_info_main, container, false);
btnClose = (ImageButton) v.findViewById(R.id.button);
btnClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Animation rotate = AnimationUtils.loadAnimation(getActivity(), R.anim.rotate_first);
Animation rotatex = AnimationUtils.loadAnimation(getActivity(), R.anim.rotate_last);
if (count % 2 == 0) {
v.setRotation(180);
v.setAnimation(rotate);
} else {
v.setRotation(0);
v.setAnimation(rotatex);
}
count++;
}
});
}
}
答案 0 :(得分:1)
我认为有两件事要尝试。
1)在v.startAnimation(rotate);
之后添加代码v.setAnimation()
。我怀疑你的动画永远不会开始。我之前想到的是android:设置中的startOffset会触发一个开始但我不清楚。
2)尝试 RotateAnimation ,动画的直接子类,而不是动画对象。似乎很多人使用RotateAnimation比其他任何东西都要多。除此之外,我怀疑的另一个问题是在布局文件中。 例如:
RotateAnimation rotate = (RotateAnimation) AnimationUtils.loadAnimation...
告诉我们会发生什么。