当方向改变而不旋转布局时如何旋转按钮?
Posted
技术标签:
【中文标题】当方向改变而不旋转布局时如何旋转按钮?【英文标题】:How to rotate buttons when orientation changes without rotating the layout? 【发布时间】:2015-10-06 21:59:31 【问题描述】:我想让 ImageButton 在设备方向改变时旋转。它应该旋转 90、180、270 和 360 角度,并且它的相对布局应该保持稳定,因此只有按钮移动。如何才能做到这一点?我做了一些研究,但没有发现任何可以帮助我的东西。
【问题讨论】:
您必须将任务分解成碎片: 1 停止轮换活动。 2. 捕捉旋转。 3. 视图的旋转....每个部分都已经有了答案,就在这里...很难相信你没有找到任何东西... 我不知道如何将我的问题分成这些部分。我是 android 和 Java 的新手。我仍然有问题,因为我的活动方向是固定的,我必须用加速度计检测方向,但不知道该怎么做。 【参考方案1】:您可以通过像这样覆盖onConfigurationChanged()
来检测方向变化:
@Override
public void onConfigurationChanged(Configuration newConfig)
super.onConfigurationChanged(newConfig);
//call your rotate method here
然后,一旦您检测到方向更改事件,您可以像这样在 Button 上执行动画旋转:
public void rotateView(View view)
Button button = (Button) view.findViewById(R.id.some_button);
RotateAnimation rotateAnimation = new RotateAnimation(0, 360);
rotateAnimation.setDuration(2000);
button.startAnimation(rotateAnimation);
你可以在RotateAnimation
的构造函数中设置开始和结束的角度,然后设置动画的持续时间(以毫秒为单位)。然后,您只需在要设置动画的视图上调用 startAnimation()
。
【讨论】:
谢谢你,@drschultz,你的回答很好,问题是我的活动方向是固定的,onConfigurationChanged 总是给出相同的结果。如果我知道如何处理这个问题,我会这么说。关于如何使用 SensorEventListener 检测轴 x 和 y 方向的任何想法? 如果您的显示方向被锁定并且无法旋转,那么很遗憾,您需要使用传感器数据计算自己的旋转值。这就是事情变得相当复杂的地方。您可以阅读有关 Android Sensors in the docs here 的信息,并查看一些代码示例,您可以在 Stack Overflow 上找到一些好的答案,例如 this question here。但如果您仍然需要传感器方面的帮助,我会提出一个新问题。 至于这个问题,我恳请您接受我的回答,因为它确实回答了您的原始问题(并且将来可能会帮助其他人解决类似的问题)。然后,如果您需要有关如何实现传感器数据的帮助,可以提出一个新问题。 它动画然后返回到之前的方向。 使用这个,`super.onConfigurationChanged(newConfig);`,只做它过去的事情,而不是使用它会使应用程序崩溃(至少在 kitkat 上)以上是关于当方向改变而不旋转布局时如何旋转按钮?的主要内容,如果未能解决你的问题,请参考以下文章
iphone - 在 iphone 的方向改变时,只旋转一个控件而不是所有其他控件