我有一个注册屏幕,用户在其中输入所有注册详细信息,当用户单击“注册”按钮时,我正在显示进度条(进度条开始旋转),然后将用户带到主屏幕。如果用户旋转当进度条旋转时手机,进度条被关闭。我希望方向不要从纵向变为横向,反之亦然,当进度条可见时(意味着它正在旋转)。如何在进度条时停止方向变化正在旋转?任何帮助将不胜感激。
问问题
6526 次
3 回答
14
发生这种情况是因为当屏幕方向旋转时,Activity 会重新启动。在这种情况下,您可以configChanges
在 AndroidManifest 文件的标签中添加属性以停止重新创建 Activity。
<activity android:name=".Activity_name"
android:configChanges="orientation|keyboardHidden">
通过,您的方向可以改变进度条是否正常工作,并且即使方向改变也不会停止。
更新
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
setContentView(R.layout.login_landscape);
}
else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
setContentView(R.layout.login);
}
}
于 2011-10-13T05:11:47.403 回答
9
正如 这里所解释的,调用
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
接着
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
真的很像魅力......在真实设备上!
不要以为在模拟器上测试时它坏了,ctrl+F11 快捷键总是改变屏幕方向,而不模拟传感器移动。
其他一些参考资料:
这是活动信息
***************** 已编辑 ************************************
而且我认为您无法处理屏幕旋转的进度条。我对吗?
因此,您无需为此解决方案停止旋转。您应该处理进度条。这里有一些教程,对于这个目的很有用..
- 进度对话框和后台线程处于活动状态时如何处理屏幕方向更改?
- 处理进度对话框和方向更改
- Android 屏幕方向旋转中的线程和进度对话框
- Android Persistent ProgressDialog 正确完成
************** 已编辑 2 *****************
有时,当方向改变时,您会丢失数据。所以你可以试试这些教程
于 2011-10-13T05:53:16.847 回答
2
在 Activity 类中使用 setRequestOrientation 方法。
继承 ProgressDialog 类,并重写方法。
示例代码如下。
class myDialog extends ProgressDialog
{
Activity mActivity;
public myDialog(Activity context) {
super(context);
this.mActivity = context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
}
@Override
public void dismiss() {
super.dismiss();
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}
于 2011-10-13T06:31:47.347 回答