2016-09-19 4 views
0

Код I SampleActivity extends AppCompatActivity, в onCreate() изменить ориентацию на ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE.Ширина и высота неверны в AppCompatActivity

Это делает размер экрана обратным. Следуйте мой AndroidManifext.xml

<activity 
    android:name=". SampleActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
    android:screenOrientation="portrait" 
    android:theme="@style/DefaultActivityTheme" 
    android:windowSoftInputMode="stateAlwaysHidden|adjustResize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN"/> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 
</activity> 

мой SampleActivity.

public class SampleActivity extends AppCompatActivity 
{ 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_screen); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 

    @Override 
    protected void onResume() 
    { 
     super.onResume(); 
    } 
} 
+0

Что вы подразумеваете под неправильным и обратным? какой результат вы получаете? и покажите свой код 'onCreate()' из 'Activity'. –

+0

@ th3pat3l ширина ширина в портрете, высота - высота в портрете. Но я перехожу к пейзажу. –

+0

Пожалуйста, покажите свой код для Деятельности. Если вы сохраняете ширину и высоту перед поворотом экрана, то да, эти значения переключаются. –

ответ

0

Хорошо, поэтому высота и ширина, которые вы получаете, не имеют ничего общего с портретом или ландшафтом. это то, что понимает телефон. Если вы хотите знать, какой это прямо сейчас, вот что вы можете сделать:

public boolean isLandscape() { 
    DisplayMetrics displayMetrics = new DisplayMetrics(); 
    boolean isLandscape = false; 
    Display d = getWindowManager().getDefaultDisplay(); 

    Point size = new Point(); 
    d.getSize(size); 

    if(size.x > size.y) { 
     isLandscape = true; 
    } 

    return isLandscape; 
} 

Этот метод вернет true если экран пейзаж, если не false.

+0

, но я хочу знать, почему расширение AppCompatActivity ошибочно, но расширяет FragmentActivity в порядке. –

+1

Затем вы должны опубликовать код о том, как вы получаете значения ширины и высоты. Мы не можем видеть, как вы получаете неправильные значения –

+0

@EgosZhang 'AppCompatActivity' расширяет' FragmentActivity', плюс вы более чем можете искать исходный код Android –