2017-04-19 2 views
1
import android.app.Fragment; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Display; 
import android.view.WindowManager; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     FragmentManager fm=getFragmentManager(); 
     FragmentTransaction ft= fm.beginTransaction(); 


     WindowManager wm= getWindowManager(); 
     Display d=wm.getDefaultDisplay(); 

     if (d.getWidth()>d.getHeight()) 
     { 
      Fragment1 f1 = new Fragment1(); 
      ft.replace(android.R.id.content, f1); 
     } 
     else 
     { 
      Fragment2 f2 = new Fragment2(); 
      ft.replace(android.R.id.content, f2); 
     } 
    ft.commit(); 
    } 
} 

Je suis en train d'utiliser des fragments dans Android et que vous souhaitez afficher fragment1 lorsque la largeur de l'écran est plus grand que j'utiliser à la place de getWidth() et getHeight() que la hauteur de l'affichage et fragment2 lorsque la hauteur de l'affichage est supérieure à la largeur de l'affichage, mais en utilisant getWidth() et getHeight() android studio dit que ces méthodes sont dépréciées. Alors, comment savoir quand la largeur est plus grande et quand la hauteur est plus grande?Que faut-il savoir quand la largeur est supérieure et lorsque la hauteur est supérieure

+1

essayez-vous de montrer le fragment un sur le portrait et le fragment 2 sur le paysage –

+0

@Shararti KAKA oui .... J'essaie de faire la même chose – Ankit

+0

utiliser 'DisplayMetrics' –

Répondre

3

Utilisez DisplayMetrics au lieu de Display.

Essayez ceci:

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.app.FragmentTransaction; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Display; 
import android.view.WindowManager; 
import android.util.DisplayMetrics; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     FragmentManager fm=getFragmentManager(); 
     FragmentTransaction ft= fm.beginTransaction(); 

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

     if (width > height) 
     { 
      Fragment1 f1 = new Fragment1(); 
      ft.replace(android.R.id.content, f1); 
     } 
     else 
     { 
      Fragment2 f2 = new Fragment2(); 
      ft.replace(android.R.id.content, f2); 
     } 

     ft.commit(); 
    } 
} 
+0

@Ankit veuillez lire ceci: http://stackoverflow.com/help/someone-answers – FAT

+0

monsieur, j'étais sur le point de vérifier la tique, mais le site donnait un avertissement que je pouvais vérifier la tique seulement après 10 minutes, donc je waing pour cela – Ankit

+0

Vous avez déjà accepté cette réponse. Merci :) Assurez-vous de donner un vote plus tard. – FAT

1

Utilisez ceci pour obtenir la largeur et la hauteur.

int Measuredwidth = 0; 
int Measuredheight = 0; 
Point size = new Point(); 
WindowManager wm = getWindowManager(); 

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    wm.getDefaultDisplay().getSize(size); 
    Measuredwidth = size.x; 
    Measuredheight = size.y; 
}else{ 
    Display d = w.getDefaultDisplay(); 
    Measuredwidth = d.getWidth(); 
    Measuredheight = d.getHeight(); 
} 
+0

où est ce x et y venant de – Ankit

+0

c'est l'affichage x et y dimensions en pixels –

3

Vous pouvez utiliser DisplayMetrics

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

if (Width > height) 
    { 
     Fragment1 f1 = new Fragment1(); 
     ft.replace(android.R.id.content, f1); 
    } 
    else 
    { 
     Fragment2 f2 = new Fragment2(); 
     ft.replace(android.R.id.content, f2); 
    } 
+0

merci pour la réponse et le temps précieux – Ankit

2
DisplayMetrics displaymetrics = new DisplayMetrics(); 
mContext.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int screenWidth = displaymetrics.widthPixels; 
int screenHeight = displaymetrics.heightPixels; 
1

Essayez

context.getWindowManager().getDefaultDisplay().getMetrics(dm); 
if(dm.widthPixels > dm.heightPixels) { 
    //width is greater, i.e. landscape 
    Fragment1 f1 = new Fragment1(); 
     ft.replace(android.R.id.content, f1); 
} else { 
    //height is greater i.e. portrait 
    Fragment2 f2 = new Fragment2(); 
    ft.replace(android.R.id.content, f2); 
} 

Vous pouvez détecter directement l'orientation en remplaçant onConfigurationChanges dans MainActivity

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Fragment1 f1 = new Fragment1(); 
     ft.replace(android.R.id.content, f1); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Fragment2 f2 = new Fragment2(); 
     ft.replace(android.R.id.content, f2); 
    } 
} 

//Add configChanges in manifest 
<activity android:name=".MainActivity" 
     android:configChanges="orientation|keyboardHidden" 
     android:label="@string/app_name">