相机拍摄都有横屏拍摄和竖屏拍摄,横竖屏切换,图标也会跟着重力方向旋转,于是也做了一个相机旋转效果。 啥也不说了,先上效果图,gif大小限制,只截取了一小段:
在Android平台中,传感器框架通常是使用一个标准的三维坐标系去表示一个值的。以方向传感器为例,确定一个方向当然也需要一个三维坐标,三个方向值就是一个长度为3的float数组。
旋转工具类:
根据重力传感器的监听,获取X、Y方向上分量计算数值角度。
为了不实时旋转,定义4个方向范围,对应角度分别为0,90,
180,270度,遍历view作属性动画。
import android.animation.ObjectAnimator;import android.app.Activity;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.view.View;import java.util.ArrayList;public class RotateSensorUtil implements SensorEventListener{
private Context context; private SensorManager sensorManager; //默认旋转角度code,分别为 0,1/2,3,4/-1 private int curRotateCode = 0; //记录当前的角度,每次旋转从此处开始 private int curAngle = 0; //需要操作旋转的集合 private ArrayList views = new ArrayList<>(); public RotateSensorUtil(Context context, ArrayList views){
this.context = context; this