我应该用什么来代替 getWidth() 和 getHeight() 来知道什么时候宽度更大,什么时候高度更大

Ank*_*kit 8 android window-managers fragment fragmentmanager 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;

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图使用Android的碎片和希望显示fragment1在显示器的宽度大于显示器的高度和更大fragment2时显示的高度比显示器的宽度,但使用时更大getWidth()getHeight()机器人工作室是说,这些方法depricated。那么如何知道什么时候宽度更大,什么时候高度更大呢?

Fer*_*med 4

使用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();
    }
}
Run Code Online (Sandbox Code Playgroud)