如何从SurfaceView内部获取窗口高度?

时间:2012-11-10 21:59:46

标签: android android-layout

当我在表面视图中

时,如何获得窗口高度

这是我的布局:(表面视图已经是LinearLayout" camera_preview"传递给它。

现在的问题是如何获得Window布局,这与FrameLayout相同?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center"
        android:layout_weight="1" >

        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:layout_gravity="center"
        android:id="@+id/camera_preview">            
        </LinearLayout>


        <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"        
        android:background="#999999"
        android:gravity="top|center_horizontal"
        android:id="@+id/top_cover">            
        </LinearLayout>


        <LinearLayout
            android:background="#999999"    
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:layout_marginRight="0dp"
            android:layout_marginTop="0dp"
            android:padding="10dp"
            android:id="@+id/bottom_cover"
            android:gravity="center">
            <Button
                android:id="@+id/button_capture"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Capture" />
        </LinearLayout>
    </FrameLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:3)

您可以通过以下方式获取屏幕尺寸:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();

然后执行(对于API级别13及以上):

Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

在以前的级别上,使用了这些弃用的代码:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();  // deprecated
int height = display.getHeight();  // deprecated

来源:Get screen dimensions in pixels