Запрет на изменение ориентации экрана
при повороте планшета или телефона
(нашел в И-нете у разных авторов и оно работает :)) Если Вы автор, дайте знать.
public class LockOrientation
{
Activity act;
public LockOrientation(Activity act)
{
this.act = act;
}
@SuppressLint("InlinedApi")
public void lock()
{
switch (act.getResources().getConfiguration().orientation)
{
case Configuration.ORIENTATION_PORTRAIT:
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.FROYO)
{ act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else
{
int rotation = act.getWindowManager().getDefaultDisplay().getRotation();
if (rotation == android.view.Surface.ROTATION_90 || rotation == android.view.Surface.ROTATION_180)
{
act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
else
{
act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
break;
case Configuration.ORIENTATION_LANDSCAPE:
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.FROYO)
{
act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else
{
int rotation = act.getWindowManager().getDefaultDisplay().getRotation();
if (rotation == android.view.Surface.ROTATION_0 || rotation == android.view.Surface.ROTATION_90)
{
act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else
{
act.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
}
break;
}
}
}
Далее в нужном месте вызываем (например в onCreate()):
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
new LockOrientation(this).lock();
}
Чтобы снять запрет на смену ориентации делаем так:
context.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
PS:
С другой стороны, если вам нужен только портретный вариант (как мне), просто пропишите в манифест файле для данного активити строчку
<activity
android:screenOrientation="portrait"
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Комментариев нет:
Отправить комментарий