android – 锁定方向,直到Asynctask完成

前端之家收集整理的这篇文章主要介绍了android – 锁定方向,直到Asynctask完成前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
只想阻止方向,直到我的视图中加载所有数据.所以我想到了以下代码,但它不起作用.
private class task extends AsyncTask<String,Void,String> {

   protected String doInBackground(String... params) {
      ...
   }

   protected void onPostExecute(String result) {
      ...
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
   }

   protected void onPreExecute() {
      ...
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
   }
}

当我运行这两行SENSOR和NOSENSOR时,我的屏幕自动水平转换,而不理解为什么.可能会发生

编辑:
我把以下几行检查当前方向,结果如下:

protected void onPreExecute() {
        if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE) {
            Log.e("TAG","LANDSCAPE");
        }else{
            Log.e("TAG","PORTRAIT");
        }
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
   }

Logcat的结果:

LANDSCAPE

但是如果我删除了两行(SetRequestedOrientation),我在logcat中得到这个:

PORTRAIT

解决方法

只是替换setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);与setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

让我知道发生了什么

入门级

protected void onPreExecute() {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
}

退出

protected void onPostExecute(String result) {
      ...
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
   }

更新:

有线行为(在你的情况下),但是,任何方式可以使用目前的方向,

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

现在在onPreExecute()中设置此方向..

喜欢,

protected void onPreExecute() {
  ...
  int currentOrientation = getResources().getConfiguration().orientation; 
   if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
   }
   else {
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
   }
}

简单..–)

猜你在找的Android相关文章