【问题标题】:How to develop an application for medium screen and large resolution in andorid?如何在android中开发中屏和大分辨率的应用程序?
【发布时间】:2014-02-14 08:57:46
【问题描述】:

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

但在 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;
    }

【问题讨论】:

  • 您能否详细说明“它不能在 Canvas 系列上运行”的含义?
  • 请查看已编辑的问题。 Canvas 系列是指 Micromax Canvas。手机是 Canvas、Canvas 2、Canvas 3、Canvas 4

标签: android size screen resolution


【解决方案1】:

我认为您可以在这里做几件事,既可以提高代码质量,又可以解决您遇到的问题:

  1. 您应该将同一个 XML 文件放在不同的文件夹中,而不是在 XML 文件中检测方向和加载 (layout/layout-land)
  2. 阅读文档here,您可能会决定使用sw600dp 而不是“大”

【讨论】:

  • 我以前也做过同样的事情。但它导致了错误,所以我这样做了,它奏效了。但我的问题是如何在大分辨率设备上运行该应用程序。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-09
    • 2012-10-05
    相关资源
    最近更新 更多