只想阻止方向,直到我的视图中加载所有数据.所以我想到了以下代码,但它不起作用.
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); } }
简单..–)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。