如何在android中开发中画面和大分辨率的应用程序?

时间:2014-02-14 08:57:46

标签: android size screen resolution

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

但是在Micromax Canvas系列中,它需要重新设计为平板电脑,因为这些类型的设备分辨率很高。

我的设备屏幕大约为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;
    }

2 个答案:

答案 0 :(得分:2)

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

  1. 您应该将相同的XML文件放在不同的文件夹中(layout/layout-land
  2. ,而不是检测XML文件中的方向和加载。
  3. 仔细阅读文档here,您可能决定选择sw600dp代替'大'

答案 1 :(得分:0)

Coding Way中执行此操作是不好的做法,因为部分设备无法返回确切的物理屏幕尺寸,但这是您解决问题的方法

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