我正在做:
button.setLayoutParams(new GridView.LayoutParams(65, 65));
根据文档,宽度和高度的单位(上面都是65)是"像素".你如何强制这是设备无关的像素,或"dp"?
我需要使用dip/dp(在java文件中)编写android小部件的布局.在运行时如果我编码,
    int pixel=this.getWindowManager().getDefaultDisplay().getWidth();
这将返回屏幕宽度(以像素为单位)(px).为了将其转换为dp,我编码:
            int dp =pixel/(int)getResources().getDisplayMetrics().density ;
这似乎没有返回正确的答案.我制作了WVGA800的模拟器,其屏幕分辨率为480×800.当运行模拟器并让代码打印像素和dp的值时,两者都达到了320.该仿真器为240 dpi,其比例因子为0.75.
Android将屏幕尺寸定义为Normal Large XLarge等.
它会自动选择适当文件夹中的静态资源.我需要有关我的java代码中当前设备的数据.DisplayMetrics仅提供有关当前设备密度的信息.没有关于屏幕尺寸的信息.
我发现在grep的代码的屏幕尺寸枚举这里 然而,这似乎并没有提供给我的4.0 SDK.有没有办法获得这些信息?
我试过这个......
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int fullscreenheight = metrics.heightPixels;
int fullscreenwidth = metrics.widthPixels;
和....
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Gnex的显示屏为720×1280.宽度/高度的返回结果(取决于当然的方向)永远不会是1280.我认为这可能与冰淇淋三明治中的屏幕导航栏有关,所以我隐藏了:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
...然后启动一个连续记录屏幕尺寸高度/宽度的线程.即使在ICS导航栏完全消失后......屏幕大小也永远不会报告1280值.我会得到这样的数字:
width  = 720
height = 1184
如何在ICS中获得真正的设备屏幕分辨率?
我需要这个值的原因是因为我的应用程序播放视频,我希望视频在设备处于横向时占据整个屏幕.现在我知道你在想什么,为什么不给视频视图增加高度/宽度的"match_parent"值?原因是因为我的视频有多个宽高比,我希望能够根据屏幕的整个宽度计算正确的视频大小.
如何在Android中获得可用的屏幕高度?我需要高度减去状态栏/菜单栏或可能在屏幕上的任何其他装饰,我需要它适用于所有设备.另外,我需要在onCreate函数中知道这一点.我知道之前已经问过这个问题,但我已经尝试过他们的解决方案而且没有一个能够工作.以下是我尝试过的一些事情:
我已经在API 7-17上测试了这个代码.不幸的是,在API 13上,水平和垂直底部都有额外的空间,而在API 10,8和7上,水平和垂直底部都没有足够的空间.(我没有测试过时的API):
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
TypedValue tv = new TypedValue();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
        screenHeight -= TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0)
    screenHeight -= getResources().getDimensionPixelSize(resourceId);
这不考虑状态栏/菜单栏:
Display display = getWindowManager().getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
这也不是:
Point size = new Point();
getWindowManager().getDefaultDisplay().getSize(size);
screenWidth = size.x;
screenHeight = size.y;
这不是:
Point size = new …如何在Android中获得可用的屏幕高度?我需要高度减去状态栏/菜单栏或可能在屏幕上的任何其他装饰,我需要它适用于所有设备.另外,我需要在onCreate函数中知道这一点.我知道之前已经问过这个问题,但我已经尝试过他们的解决方案而且没有一个能够工作.以下是我尝试过的一些事情:
这不考虑状态栏/菜单栏:
Display display = getWindowManager().getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
这也不是:
Point size = new Point();
getWindowManager().getDefaultDisplay().getSize(size);
screenWidth = size.x;
screenHeight = size.y;
这不是:
Point size = new Point();
getWindowManager().getDefaultDisplay().getRealSize(size);
screenWidth = size.x;
screenHeight = size.y;
这不起作用:
Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
// since SDK_INT = 1;
screenWidth = metrics.widthPixels;
screenHeight = metrics.heightPixels;
try
{
    // used when 17 > SDK_INT >= 14; includes window decorations (statusbar bar/menu bar)
    screenWidth = (Integer) Display.class.getMethod("getRawWidth").invoke(display); …我可以在Android应用程序中以编程方式找到屏幕的宽度吗?我需要绘制画布,但它的宽度应该几乎像屏幕,我无法在java零件程序中设置match_parent.