如何在ANDROID中开发中屏幕和大分辨率的应用程序?

如何在ANDROID中开发中屏幕和大分辨率的应用程序?,android,size,screen,resolution,Android,Size,Screen,Resolution,我开发了一个应用程序。适用于大屏幕平板电脑和中屏幕移动设备 但在Micromax Canvas系列中,它将Resourceation视为平板电脑,因为这类设备的分辨率很高 我的设备有大约4的屏幕,但是当我在我的设备上运行代码时,它的大小被认为是5.81。可能是因为高分辨率 有人能说出解决办法吗 我检查屏幕大小的代码是 int orientation = getWindowManager().getDefaultDisplay().getOrientation(); scr

我开发了一个应用程序。适用于大屏幕平板电脑和中屏幕移动设备

但在Micromax Canvas系列中,它将Resourceation视为平板电脑,因为这类设备的分辨率很高

我的设备有大约4的屏幕,但是当我在我的设备上运行代码时,它的大小被认为是5.81。可能是因为高分辨率

有人能说出解决办法吗

我检查屏幕大小的代码是

   int orientation = getWindowManager().getDefaultDisplay().getOrientation();

        screen_size = global.getScreenSize();                
        Toast.makeText(getApplicationContext(), "Screen Size:" +screen_size, 500).show();        

        if(screen_size>=5.1)
        {   
            if (orientation==0)       
                setContentView(R.layout.login_large);
            else if (orientation==1)         
                setContentView(R.layout.login_large_land);
            else if (orientation==2)       
                setContentView(R.layout.login_large);
            else if (orientation==3)         
                setContentView(R.layout.login_large_land);
        } 
当我运行该应用程序时,它在平板电脑和三星设备上成功运行,但在Micromax Canvas系列上没有运行

我的全局变量编码是

public double getScreenSize()
    {
     double size = 0;
         try
         {           
             DisplayMetrics dm = getApplicationContext().getResources().getDisplayMetrics();
             float screenWidth  = dm.widthPixels / dm.xdpi;
             float screenHeight = dm.heightPixels / dm.ydpi;
             size = Math.sqrt(Math.pow(screenWidth, 2) + Math.pow(screenHeight, 2));
         }
         catch(Throwable t){}
         return size;
    }

我认为您可以在这里做一些事情,既可以提高代码质量,也可以解决您所看到的问题:

  • 您不应该在XML文件中检测方向和加载,而应该将相同的XML文件放在不同的文件夹中(
    layout/layout land
  • 通读文档,您可能会决定使用
    sw600dp
    而不是“大型”

  • 编码方式执行此操作是一种不好的做法,因为某些设备无法返回准确的物理屏幕大小,但下面是解决此问题的方法

    DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);
            double x = Math.pow(dm.widthPixels/dm.xdpi,2);
            double y = Math.pow(dm.heightPixels/dm.ydpi,2);
            screen_size = Math.sqrt(x+y);
            Log.d("debug","Screen inches : " + screen_size);
    
    然后你可以做你想做的事

    if(screen_size>=5.1)
            {   
                if (orientation==0)       
                    setContentView(R.layout.login_large);
                else if (orientation==1)         
                    setContentView(R.layout.login_large_land);
                else if (orientation==2)       
                    setContentView(R.layout.login_large);
                else if (orientation==3)         
                    setContentView(R.layout.login_large_land);
            } 
    

    你们能详细阐述一下“它不在画布上运行”的意思吗?请看编辑后的问题。帆布系列指Micromax帆布。手机是画布,画布2,画布3,画布4,我以前也这么做过。但是它导致了错误,所以我就这样做了,并且成功了。但我的问题是如何在大分辨率设备上运行该应用程序。