OrientationEventListener

OrientationEventListener

我在Android Studio中有一个要解决的问题,但是我很新。我必须创建一个在调用onResume()方法时始终递增的变量,但是如果更改了方向,则该变量不得递增。

我想通过在onResume()方法内使用if-else语句(如果OrientationEventListener返回false则使变量递增,并且如果方向更改(true)则不影响变量)来解决此问题,并祝酒写出变量的值。但是,即使我搜索了数小时的答案,我也不知道如何从中获取布尔类型的返回值。
也有类似的问题,但是我无法成功实现他们的灵魂。这是我的代码,如果有帮助的话:

public class MainActivity extends Activity {
    public static final String MY_TAG = "tagged";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void mOrientationListener = new OrientationEventListener(this SensorManager.SENSOR_DELAY_NORMAL) {
        @Override
        public void onOrientationChanged(int orientation) {

        }
    };

    public void onResume() {
        super.onResume();
        setContentView(R.layout.activity_main);
        int sum = 0;
        int ak = int onOrientationChanged;
        if ( != 0) {
            Log.i(MY_TAG, "onResume");
            tToast("onResume:");
            sum++;
            nToast(sum);
        }else {
            nToast(sum);
        }
    }
    private void tToast(String s) {
        Context context = getApplicationContext();
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(context, s, duration);
        toast.show();
    }
    private void nToast(Integer a) {
        Context context = getApplicationContext();
        int duration = Toast.LENGTH_SHORT;
        Toast toast = Toast.makeText(context, a, duration);
        toast.show();
    }
}

最佳答案

当您需要了解设备旋转的精确方向(以度为单位(从0到359))时,使用OrientationEventListener。我假设您是在横向/纵向上谈论方向,因此OrientationEventListener并不是解决此问题的正确方法。

我认为最好的方法是每次检查onCreate()中的方向,并将其与以前的方向进行比较以设置标志didChangeOrientation或类似的东西,然后可以在操作。

private int orientation;
private boolean didChangeOrientation;

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("orientation", orientation);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    orientation = getResources().getConfiguration().orientation;

    if (savedInstanceState != null) {
        int previousOrientation = savedInstanceState.getInt("orientation");
        didChangeOrientation = (orientation != previousOrientation);
    }
    else {
        didChangeOrientation = false;
    }

    ...
}

@Override
public void onResume() {
    super.onResume();

    if (!didChangeOrientation) {
        // your code here
    }
}

08-18 05:11