2016-09-19 2 views
0

I Code a SampleActivity extends AppCompatActivity, in onCreate() ändern Sie die Ausrichtung zu ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE.Breite und Höhe sind falsch in AppCompatActivity

Es macht die Bildschirmgröße ist umgekehrt. Folgen Sie ist mein 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> 

meine 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

was meinst du mit falsch und umgekehrt? Was ist das Ergebnis, das du bekommst? und zeige deinen 'onCreate()' Code von der 'Aktivität'. –

+0

@ th3pat3l die Breite ist die Breite im Hochformat, die Höhe ist die Höhe im Hochformat.aber ich ändere die Landschaft. –

+0

Bitte zeigen Sie Ihren Code für die Aktivität an. Wenn Sie die Breite und Höhe speichern, bevor der Bildschirm gedreht wird, dann, ja, diese Werte sind geschaltet –

Antwort

0

Ok, also die Höhe und Breite, die Sie erhalten, hat nichts mit Portrait oder Landschaft zu tun. das ist genau das, was das Telefon versteht. Wenn Sie wissen wollen, was es jetzt ist, ist hier, was Sie tun können:

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; 
} 

Diese Methode true zurück, wenn Bildschirm Landschaft, wenn nicht false.

+0

aber ich will wissen, warum AppCompatActivity erweitert ist falsch, aber erweitert FragmentActivity ist in Ordnung. –

+1

Dann müssen Sie den Code veröffentlichen, wie Sie die Werte für Breite und Höhe erhalten. Wir können nicht sehen, wie Sie die falschen Werte erhalten. –

+0

@EgosZhang 'AppCompatActivity' erweitert' FragmentActivity', und Sie sind mehr als willkommen, den Android-Quellcode zu durchsuchen –