воскресенье, 29 марта 2015 г.

Запрет на изменение ориентации экрана 

при повороте планшета или телефона

(нашел в И-нете у разных авторов и оно работает :)) Если Вы автор, дайте знать.


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" />
          


Комментариев нет:

Отправить комментарий