Android屏幕渲染真的错了

时间:2014-08-23 14:39:55

标签: android glsurfaceview

我正在使用GLSurfaceView在我的应用程序界面后面渲染一个动态壁纸,其中包含android UI元素。

在我的应用程序的开头,我问用户是否想要看到这个壁纸。 只有当用户接受GLSurfaceView时,它才会在现有的xml中作为第一个元素膨胀,因此它会留在后面。

我的问题恰恰与我认为的相反。

当壁纸处于激活状态时,屏幕会正确渲染,如下所示:

enter image description here

当我不使用壁纸时,它会呈现为部分刻录的图形卡:

enter image description here

正如您从xml结构中看到的那样,我的GLSurfaceView甚至没有注入有问题的情况。

奇怪的是,当它被注入时,DDMS Monitor将其显示为

如果情况相反,则很明显问题是由GLSurfaceView引起的。但现在似乎缺乏它会导致这个问题。

关于可能出现什么问题的任何想法?

我正在使用Nexus 4进行测试,似乎可以根据DanJAB进行相关

XML布局:

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

  <Button
    style="?metaButtonBarButtonStyle"
    android:id="@+id/home_history"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/button_calibrator"
    android:text="@string/history"/>

  <View
    android:id="@+id/button_calibrator"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/home_history"
    android:layout_alignBottom="@+id/home_history"
    android:layout_centerHorizontal="true"/>

  <Button
    style="?metaButtonBarButtonStyle"
    android:id="@+id/home_help"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_toRightOf="@+id/button_calibrator"
    android:text="@string/help"/>

  <View
    android:id="@+id/screen_menu_seperator"
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:layout_below="@+id/home_history"
    android:background="@color/holo_blue"/>

  <ListView
    android:id="@+id/homescreen_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/screen_menu_seperator"
    android:background="@android:color/transparent"
    android:cacheColorHint="@android:color/transparent"/>

  <View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:layout_alignParentBottom="true"
    android:background="@color/holo_blue"/>

</RelativeLayout>

GLSurfaceView XML:

<?xml version="1.0" encoding="utf-8"?>
<android.opengl.GLSurfaceView    xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/background"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_centerInParent="true"
  android:visibility="gone"/>

并在java中:

getLayoutInflater().inflate(R.layout.background, contents);
GLSurfaceView background = (GLSurfaceView) contents.findViewById(R.id.background);

1 个答案:

答案 0 :(得分:1)

这是手机错误。 Nexus 4会在某些主题配置中导致此问题。