我开发了一个应用程序。适用于大屏幕平板电脑和中型屏幕移动设备。
但是在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;
}
答案 0 :(得分:2)
我认为你可以在这里做一些事情,既可以提高代码质量,又可能解决你所看到的问题:
layout/layout-land
)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);
}