Articles of screen orientation

Honeycomb的方向改变

我有一个不会在方向改变后重新创建的活动。 我在清单中的活动声明中添加了以下内容: android:configChanges=”orientation” 在Android 2.3上,这非常有效。 在HONEYCOMB_MR2上 ,当改变方向时, onCreate调用onCreate 。 是否还需要在HONEYCOMB_MR2上执行其他操作以防止在方向更改后重新创建活动?

以编程方式禁用和启用Android中活动的方向更改

我有一个应用程序,使一些后台人员。 当后台工作正在运行一个进度的时候,如果设备在这段时间内被旋转了,那么活动就会“重置”,我想避免这种情况。 出于这个原因,我决定在这个过程中禁用定位。 我已经看到这个问题differends线程,但没有一个有效的解决scheme,至less在我的情况。 发布的解决scheme是关于修复活动方向,但是如果您使用以下操作,则必须处理REVERSE方向未返回的事实: getResources().getConfiguration().orientation 上面的函数返回SCREEN_ORIENTATION_PORTRAIT对于PORTRAIT和REVERSE_PORTRAIT情况(至less在我的testing中)。 所以最后我用旋转值来处理,所以我的代码“禁用旋转”是: int rotation = getWindowManager().getDefaultDisplay().getRotation(); switch(rotation) { case Surface.ROTATION_180: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); break; case Surface.ROTATION_270: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); break; case Surface.ROTATION_0: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); break; case Surface.ROTATION_90: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); break; } 再次允许方向: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); 这在Android 4.1.2的设备中是完美的,但是在Android 4.2.1的设备中,它并不像预期的那样工作。 我想在活动周期中pipe理轮换应该是一个常见问题,但是我一直没有find合适的解决scheme。 可能是我正在寻找错误的方向,所以任何帮助真的很受欢迎。 在此先感谢,伊万。

当我旋转移动时,活动屏幕不旋转

我已经使用这个代码作为@gnobal张贴在https://stackoverflow.com/a/2700683/1556329 ,它工作的很好。 但我的问题是,我发现,当我应用Theme.Transparent活动不会去横向模式,当我旋转手机。 主题: <style name="Theme.Transparent" parent="android:Theme.Dialog"> <item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">false</item> </style> 布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/layoutImagen" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:windowContentOverlay="@null" android:windowNoTitle="true" tools:context=".ImagenExamen_activity" > <!– android:background="#CC000000" –> <!– android:backgroundDimEnabled="true" –> <ImageView android:id="@+id/imageViewImagen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> </LinearLayout> 活动: import android.app.Activity; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.Menu; import […]

使用FragmentActivity中的viewPager方向改变

我正在尝试构build一个以纵向和横向模式显示书籍的应用程序。 所以显然有1页在肖像和2在景观。 每个模式工作的相当不错,但是当我从纵向更改方向viewPager尝试从纵向模式获取2页,而不是试图从横向模式获取2个双页…实际上, FragmentStatePagerAdapter保持2个片段以纵向创build并在为横向模式创build2个双页之前使用它们 。 如果我再次以纵向模式切换,FragmentStatePagerAdapter使用之前在横向模式下创build的2个片段,所以我再次看到1双页,而不是1单页等..如果我继续切换方向,我得到一个OutOfMemoryError,由于FragmentStatePagerAdapter从来没有刷新方向变化的碎片。 这里有两个用例,以便于理解: 我以纵向模式启动viewPager 我看到页面1好 我向右滑动,然后看第2页 我向右滑动,然后看第3页 我将屏幕旋转到横向模式 我看到第3页错误 我向右滑动,并看到第4页错误 我向右滑动,我看到第5页和第6页确定 我以纵向模式启动viewPager 我看到页面1好 我向右滑动,然后看第2页 我向右滑动,然后看第3页 我向右滑动,然后看第4页 我向右滑动,然后看第5页 我将屏幕旋转到横向模式 我看到第5页错误 我向左滑动,并看到第4页错误 我向左滑动,我看到页面2和3确定 public class PlayerFragmentActivity extends FragmentActivity { private Intent mIntent; private ViewPager mPortraitPager; private ViewPager mLandscapePager; private Boolean mIsLandscape; private String mKey; private int mNbPages; private int mNbDoublePages; private PageFactory mPageFactory; […]

获取当前片段并保存onSaveInstanceState()方法屏幕方向

我有一个活动与多个片段。 我也使用actionbarSherlock我的标签,也连接到片段。 我的问题是当我要旋转屏幕(这是纵向景观/反之亦然),我的活动将被再次调用,所以它重新开始我的活动。 我不想重新启动我的活动,但只是恢复旋转之前显示的当前片段。 请不要回答android:configChanges="orientation|keyboardHidden"因为它没有解决问题,但就像一个简单的黑客攻击。 我的解决scheme是OnsaveInstanceState和onRestoreInstanceState方法,但我只是不知道如何使用它与我的问题。 请帮助我这个。 任何回应非常感激。 码: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab tabA = actionBar.newTab().setIcon(R.drawable.about); ActionBar.Tab tabE = actionBar.newTab().setIcon(R.drawable.faq); ActionBar.Tab tabB = actionBar.newTab().setIcon(R.drawable.sponsors); ActionBar.Tab tabC = actionBar.newTab().setIcon(R.drawable.map); ActionBar.Tab tabD = actionBar.newTab().setIcon(R.drawable.destination); Fragment aboutTab = new PhotosActivity(); Fragment sponsorTab = new SongsActivity(); Fragment mapTab = new […]

屏幕方向改变后,dialogFragment显然没有任何调用

这里有一部分屏幕方向改变的Activity: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.editText1); et.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { Fragment1 dialogFragment = new Fragment1(); dialogFragment.show(getFragmentManager(), null); dialogFragment.setTextDialog(et.getText().toString()); return true; } }); } 显然,DialogFragment里面出现的对话框应该出现在editText上方的onLongClick后面(我知道当屏幕方向改变Activity被重新启动,但是它不会像第一次创build时那样正常启动? ) 我的问题是:当我至less打开一次对话框并将其closures后,在屏幕方向改变之后,我再次在屏幕上显示对话框,就像我长按了editText一样。 我不完全知道为什么会发生这种情况。 我也附加了对话框片段的结构: public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); LayoutInflater adbInflater = LayoutInflater.from(getActivity()); View […]

如何在android中的肖像locking屏幕中检测我的屏幕方向?

我想在locking的人像定位模式下find相机的屏幕方向,以及我在片段类中使用相机,我已经将屏幕方向设置为肖像,但是我面对的问题是,当我将相机从肖像转换为风景变得更改,只有当相机处于肖像模式时,我才需要设置捕捉button。 任何人都可以帮助我获得肖像模式的方向变化? 以下是我的代码: getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); sensorManager.registerListener(new SensorEventListener() { int orientation=-1;; @Override public void onSensorChanged(SensorEvent event) { if (event.values[1] < 6.5 && event.values[1] > -6.5) { if (orientation!=1) { Log.d("Sensor", "Landscape"); } orientation = 1; } else { if (orientation!=0) { Log.d("Sensor", "Portrait"); } orientation = 0; } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { […]

使用SupportToolbar进行手机布局,并为平板电脑布局使用独立的操作栏

今天,我正在想办法改善我的平板电脑devise,我发现这个图像 我想那么糟糕,因为它看起来很棒。 我现在search谷歌大约一个小时,我还没有遇到任何好的教程。 我发现了这个: 前棒棒糖的v21材料devise 。 我开始实施这一切,我试过的一切都完全错了。 独立操作栏的主题需要是ThemeOverlay.AppCompat.ActionBar但是在我的手机布局中,我扩展了Theme.AppCompat.NoActionBar主题。 (主题如下) 目前还不清楚我应该怎么做才能在平板电脑上制作类似上面的图片,并在电话上显示正常的(自定义)supportActionBar而不会搞乱其中的一个。 这是我的AppTheme风格(我适用于我的应用程序) <!– Base application theme. –> <style name="AppTheme" parent="@style/Theme.AppCompat.NoActionBar"> <!– your app branding color for the app bar –> <item name="colorPrimary">@color/primaryColor</item> <!– darker variant for the status bar and contextual app bars –> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <!– theme UI controls like checkboxes and text fields –> […]

平板电脑屏幕方向更改 – 没有查找ID为片段

我已经看过有关我的问题的问题,但不知道是什么问题。 如果这是转发,请和我联系。 这是我正在寻找的: 手机的布局更改工作正常,因为它涉及片段内的相同视图。 问题是,当我尝试在平板电脑中获得以下布局。 纵向模式下的activity_main.xml: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <include android:id="@+id/toolbar" layout="@layout/toolbar_with_spinner" /> <FrameLayout android:id="@+id/fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </LinearLayout> <ListView android:id="@+id/listview_drawer" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" android:background="@color/white" android:choiceMode="singleChoice" android:divider="@null" android:dividerHeight="0dp" /> </android.support.v4.widget.DrawerLayout> 横向模式下的activity_main.xml: <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <include android:id="@+id/toolbar" layout="@layout/toolbar_with_spinner" /> […]

Android:在活动屏幕方向更新期间保持MediaPlayer运行

我使用MediaPlayer播放MP3。 目前我通过使用禁用屏幕方向更改 android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation" 在清单中。 我现在想要支持横向模式 – 即移除这些标签 – 但是有问题,在销毁/创build循环期间,播放器被停止然后重新启动。 这是可以的,我甚至在onPause()手动执行这个操作来在活动进入后台时停止播放器。 为了在方向变化时保持运行,我尝试将其设置为静态(并使用应用程序上下文创build一次)。 当然,当我现在删除了onPause()中的player.stop()时,它就是我想要的 – 直到 Activity在后台运行。 所以,有两个问题: 如何确定在调用onStop()之后是否直接重新创buildActivity 或者:如何让MediaPlayer在该周期内保持运行,而当应用程序在后台运行时停止运行?