wake-up-neo.com

Finden Sie heraus, ob das Android-Gerät für den normalen Gebrauch im Hoch- oder Querformat ist?

Gibt es trotzdem herauszufinden, ob ein Gerät standardmäßig im Hoch- oder Querformat ist? Damit meine ich, wie Sie das Gerät normalerweise benutzen. 

Die meisten Telefone verfügen über einen Hochformatbildschirm für den normalen Gebrauch.

38
joynes

Sie können dies durch:

Für die Landschaft

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE){
    //Do some stuff
}

Für Portrait

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
    //Do some stuff
}

Überprüfen Sie: http://developer.Android.com/reference/Android/content/res/Configuration.html#orientation

139
Hazem Farahat

Dank @Codeversed, dessen exzellente Antwort sehr nahe an der Arbeit ist (aber NICHT wie gezeigt), habe ich eine MainActivity, die gut funktioniert. Alles, was getan werden muss, ist .enable dorthin zu verschieben, wo es AUSSERHALB des on-Blocks ausgeführt werden kann, beispielsweise unmittelbar nach der Deklaration von myOrientationEventListener.

import Android.app.Activity;
import Android.hardware.SensorManager;
import Android.os.Bundle;
import Android.util.Log;
import Android.view.OrientationEventListener;

public class MainActivity extends Activity
{
    public static boolean PORTRAIT_MODE = true;
    OrientationEventListener myOrientationEventListener ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        myOrientationEventListener = new OrientationEventListener(this,
                SensorManager.SENSOR_DELAY_NORMAL)
        {
            @Override
            public void onOrientationChanged(int orientation)
            {
                PORTRAIT_MODE = ((orientation < 100) || (orientation > 280));
                Log.w("Orient", orientation + " PORTRAIT_MODE = " + PORTRAIT_MODE);
            }
        };
        Log.w("Listener", " can detect orientation: " + myOrientationEventListener.canDetectOrientation() + " ");
        myOrientationEventListener.enable();
    }
}
2
DSlomer64

Tun Sie dies in Ihrer Freizeit:

if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

zum Beispiel...

2
Cícero Moura
package com.Android.portraitandlandscape;

import Android.app.Activity;
import Android.os.Bundle;
import Android.util.Log;
import Android.view.Display;
import Android.widget.Toast;

public class PortraitLandScape extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Display display = getWindowManager().getDefaultDisplay(); 
    int width = display.getWidth();
    int height = display.getHeight();

    Log.v("log_tag", "display width is "+ width);
    Log.v("log_tag", "display height is "+ height);

    if(width<height){
        Toast.makeText(getApplicationContext(),"Device is in portrait mode",Toast.LENGTH_LONG ).show();
    }
    else{
        Toast.makeText(getApplicationContext(),"Device is in landscape  mode",Toast.LENGTH_LONG ).show();
    }

 }
}

Mit diesem Code können Sie prüfen, ob sich das Gerät im Querformat oder im Hochformat befindet.

2
Herry

Ich hatte ein ähnliches Problem. Gelöst durch den Vergleich von Rotations- und Orientierungswerten. Es müssen keine Sensoren oder Zuhörer verwendet werden. Rufen Sie einfach die Methode isDefaultLandscape auf, wann immer Sie möchten.

private boolean isDefaultLandscape(final Context context)
{
    Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int rotation = display.getRotation();
    int orientation = context.getResources().getConfiguration().orientation;

    switch (rotation)
    {
        case Surface.ROTATION_180:
        case Surface.ROTATION_0:
        {
            return orientation == Configuration.ORIENTATION_LANDSCAPE;
        }
        default:
        {
            return orientation == Configuration.ORIENTATION_PORTRAIT;
        }
    }
}
1
Sa Qada

Ich bin nicht sicher, ob dies helfen wird, aber dies ist ein schnelles Beispiel, das ich geschrieben habe. Es zeigt Ihnen, wie Sie einen Zuhörer haben ... und damit herausfinden können, in welcher Orientierung Sie sich befinden.

...textviewOrientation = (TextView)findViewById(R.id.textView1);

    myOrientationEventListener = new OrientationEventListener(this, 
              SensorManager.SENSOR_DELAY_NORMAL){

        @Override
        public void onOrientationChanged(int arg0) {

         textviewOrientation.setText("Orientation: " + String.valueOf(arg0));
         myOrientationEventListener.enable();


             if ((arg0 < 100) || (arg0 > 280)){

                 setRequestedOrientation(
                     ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

             } else {

                 setRequestedOrientation(
                     ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

             }


        }

    };...


[email protected]
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    myOrientationEventListener.disable();
}...
1
Codeversed

Es ist einfach , Nur ein If-Else Block:

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
    // landscape
} else {
    // portrait
}
0
Hasib Akter
// Current orientation
public boolean landscape = false;

public boolean isLandscape(){

    DisplayMetrics displaymetrics = new DisplayMetrics();
    context.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int width = displaymetrics.widthPixels;
    int height = displaymetrics.heightPixels;

    if(width<height){
        landscape = false;
    }
    else{
        landscape = true;
    }

    return landscape;

}
0
codebyjames