Ukj*_*ent 14 size android deprecated
嘿我需要在我的应用程序中获得屏幕的宽度.该应用程序将在2.1及更高版本上运行.我已将其设置为如下所示.该方法已弃用,我应该可以使用getSize或其他方式.但问题是:这适用于3.0+和4.0+等Android版本,还是会让应用程序崩溃.我之前在线程中使用了一个弃用的方法,它使应用程序在冰淇淋设备上崩溃.下面的方法会起作用吗?
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Run Code Online (Sandbox Code Playgroud)
编辑:
我试过了getSize,但我没有让它工作:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Run Code Online (Sandbox Code Playgroud)
小智 23
我不确定,但这可行:
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
} else {
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*ell 12
我不知道这些弃用的方法是否适用于Android 3和4.最好的方法是在模拟器上进行测试.
但是,这里最安全的兼容方法是使用反射尝试一种方法,然后再回到另一种方法.从本质上讲,你可以使自己的版本getSize()不会失败.我不能测试这个atm,但它可能看起来像这样:
void overrideGetSize(Display display, Point outSize) {
try {
// test for new method to trigger exception
Class pointClass = Class.forName("android.graphics.Point");
Method newGetSize = Display.class.getMethod("getSize", new Class[]{ pointClass });
// no exception, so new method is available, just use it
newGetSize.invoke(display, outSize);
} catch(NoSuchMethodException ex) {
// new method is not available, use the old ones
outSize.x = display.getWidth();
outSize.y = display.getHeight();
}
}
Run Code Online (Sandbox Code Playgroud)
然后当然只是用类似的东西来称呼它
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
overrideGetSize(display, size);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25165 次 |
| 最近记录: |