2017-04-19 66 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(); 
    } 
} 

我试图使用Android的碎片和希望显示fragment1时显示的宽度较大比显示屏的高度和fragment2当显示屏的高度大于显示屏的宽度,但是当使用getWidth()getHeight()时,android studio会说这些方法已被删除。 那么如何知道什么时候宽度较大,何时高度较高?我应该到位的getWidth()和getHeight()的使用,知道什么时候宽度较大,当高度大于

+1

你试图在肖像上显示片段1而在横向上显示片段2 –

+0

@Shararti KAKA是的....我试图做同样的事情 – Ankit

+0

使用'DisplayMetrics' –

回答

3

使用DisplayMetrics而不是Display

试试这个:

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请仔细阅读此:http://stackoverflow.com/help/someone-answers – FAT

+0

先生,我正在检查剔号,但该网站发出警告,我只能在10分钟后检查剔号,所以我正在为此付费 – Ankit

+0

您已接受此答案。谢谢:)请务必稍后再进行投票。 – FAT

1

使用此来获得宽度和高度。

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

这是x和y来自 – Ankit

+0

这是显示x和y的像素尺寸 –

3

您可以使用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

感谢您的答案和宝贵的时间 – Ankit

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

尝试

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

您可以直接通过重写onConfigurationChanges在检测方向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"> 
相关问题