Android旋转按钮的实现

记得QQ中有一个按钮,点击之后它就向左旋转30度,再点击就变回原来的样子,感觉特别有意思,今天我才知道它的实现原理,原来它用了一个类来实现的,只要简单的设置一下角度就可以实现了。
public class RoatAnimUtil {
	//旋出的动画,无延迟时间
	public static void startAnimationOut(View view) {
		startAnimationOut(view, 0);

	}
	//旋入的动画,无延迟时间
	public static void startAnimationIn(View view) {
		startAnimationIn(view, 0);
	}
	//旋出的动画
	//delay为动画延迟的时间,单位是毫秒
	public static void startAnimationOut(View view, long delay) {
		RotateAnimation animation = new RotateAnimation(240, 180,
				view.getWidth() / 2, view.getHeight()/2);
		animation.setDuration(500);
		animation.setStartOffset(delay);
		animation.setFillAfter(true);
		view.startAnimation(animation);

	}
	//旋入的动画
	//delay为动画延迟的时间,单位是毫秒
	public static void startAnimationIn(View view, long delay) {
		RotateAnimation animation = new RotateAnimation(180, 240,
				view.getWidth() / 2, view.getHeight()/2);
		animation.setDuration(500);
		animation.setStartOffset(delay);
		animation.setFillAfter(true);
		view.startAnimation(animation);
	}

}

在这个类中,RoateAnimation是Android提供的类,用来做旋转动画,我们把需要旋转的View传进去就可以了,delay我传入的是0。view.getWidth(),view.getHeight()/2,这两个参数表示,我们进行是中心旋转,因为我们根据这两个参数得到的就是控件的中心位置,所以是中心旋转。

下面是的MainActivity.java的代码:

public class MainActivity extends Activity implements OnClickListener{
	
	ImageButton btn;
	int x = 0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);	
		btn = (ImageButton) findViewById(R.id.btn);
		btn.setOnClickListener(this);
	}
	@Override
	public void onClick(View v) {
		if(x==0){
			RoatAnimUtil.startAnimationIn(btn);
			Toast.makeText(MainActivity.this, "打开", Toast.LENGTH_SHORT).show();
			x=1;
		}else{
			x=0;
			RoatAnimUtil.startAnimationOut(btn);
			Toast.makeText(MainActivity.this, "关闭", Toast.LENGTH_SHORT).show();
		} 
		
	}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值