在首次显示之前获取屏幕高度?
Posted
技术标签:
【中文标题】在首次显示之前获取屏幕高度?【英文标题】:Getting screen height before first display? 【发布时间】:2010-12-22 20:14:32 【问题描述】:我有一个列表视图。我用 8 个项目填充它,这就是 G1 上的所有内容。我的一些用户说 Droid 的屏幕高度更高,因此我可能可以向 ListView 添加一两个项目以占用提供的额外空间。
如何在 UI 显示之前测量屏幕在启动时提供的可用高度?如果我看到高度可以容纳超过 8 个项目,我想再添加一到两行。
【问题讨论】:
这听起来像是一条危险的道路,因为如果用户决定将他们的 G1 设置为横向模式怎么办?如果屏幕尺寸比 G1 更小,您当前的 8 个项目会太大? 是的,很好的一点 - 老实说,我对这样做感到紧张,但想调查一下。我认为这可能是一个合理的猜测:在应用启动时,在纵向模式下获取屏幕高度。用它作为我的标准来确定要显示多少项目。我同意他们以横向模式启动应用程序,并拥有更多适合该方向的项目。理想情况下,我只希望有一些项目,这样当它们处于纵向模式时,所有项目都适合而不需要任何滚动,谢谢 这是某种动态增长的列表吗?您总是可以只用锤子解决问题并最初加载 16 个项目。除非您正在为填充每一行做一些疯狂的事情,否则我不认为这会在速度上有明显的差异,这样在更高的分辨率下列表仍然看起来“满”,而不必担心跳过的箍丹尼尔提到的。 【参考方案1】:我同意上面的 cmets,但如果你真的想走这条路,试试这个:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
您可以从您的主要活动中执行此操作,即从启动器启动的活动。
但是,这并没有考虑到通知栏或窗口装饰所占用的空间,因此实际上,您的空间小于宽度乘以高度。
【讨论】:
【参考方案2】:这是我用得最多的代码:
public class MainActivity extends Activity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.????????);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
Constants.SCREEN_HEIGHT = dm.heightPixels;
Constants.SCREEN_WIDTH = dm.widthPixels;
【讨论】:
以上是关于在首次显示之前获取屏幕高度?的主要内容,如果未能解决你的问题,请参考以下文章