SurfaceView没有显示出来

时间:2012-11-06 21:33:25

标签: android layout surfaceview

我有一个按下按钮时调用的类,用作背景的.xml文件只是一个黑屏。当我运行我的应用程序时,我收到此错误:

11-07 12:03:50.969:E / AndroidRuntime(30747):致命异常:主要 11-07 12:03:50.969:E / AndroidRuntime(30747):java.lang.NullPointerException 11-07 12:03:50.969:E / AndroidRuntime(30747):at com.synlight_development.tattoo_it.Menu $ 2.onClick(Menu.java:71) 11-07 12:03:50.969:E / AndroidRuntime(30747):在android.view.View.performClick(View.java:2532) 11-07 12:03:50.969:E / AndroidRuntime(30747):在android.view.View $ PerformClick.run(View.java:9293) 11-07 12:03:50.969:E / AndroidRuntime(30747):在android.os.Handler.handleCallback(Handler.java:587) 11-07 12:03:50.969:E / AndroidRuntime(30747):在android.os.Handler.dispatchMessage(Handler.java:92) 11-07 12:03:50.969:E / AndroidRuntime(30747):在android.os.Looper.loop(Looper.java:150) 11-07 12:03:50.969:E / AndroidRuntime(30747):在android.app.ActivityThread.main(ActivityThread.java:4263) 11-07 12:03:50.969:E / AndroidRuntime(30747):at java.lang.reflect.Method.invokeNative(Native Method) 11-07 12:03:50.969:E / AndroidRuntime(30747):at java.lang.reflect.Method.invoke(Method.java:507) 11-07 12:03:50.969:E / AndroidRuntime(30747):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839) 11-07 12:03:50.969:E / AndroidRuntime(30747):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 11-07 12:03:50.969:E / AndroidRuntime(30747):at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:3)

因为windowView默认显示在窗口底部。

试试这个

   v.setZOrderOnTop(true);  //it puts surfaceview to top of your window.

或者你的SView类在构造函数等中设置这些参数。

   setZOrderOnTop(true); 

如果您想使用GlSurfaceView。在构造函数中试试这个,

   setEGLConfigChooser(8,8,8,8,16,0);
   getHolder().setFormat(PixelFormat.TRANSLUCENT);

多亏了你的表面视图变得透明。

如果你尝试将surfaceView放到窗口的中间层,那么它比这个更难

   surfaceView.setZOrderMediaOverlay(true);

并且您也看到了黑屏,因为您的表面视图需要另一个表面视图才能获得顶部。 我解决了这个问题,我创建了另一个surfaceView(也许你想使用CameraView等)。并绘制 背景图片和其他surfaceView得到顶部,并添加另一个视图顶部的窗口 那样的。

1.Layer - > backgroundDrawnSurfaceView

2.Layer(中间层) - > myrealSurfaceView

3.Layer - >另一种观点。

答案 1 :(得分:0)

您编辑了问题

首先添加SView动作侦听器本身。 之后在编辑器活动onCreate中,您将onTouch侦听器添加到您的SView,编辑器。 并没有找到Thread。

尝试此解决方案 - >删除

    v.setOnTouchListener(this);

并添加

  sleep(50); 

在SView中,触摸侦听器。