1

Samsung Galaxy 3 の水の波紋のようなロック画面の実装に取り​​組んでいます。GLSurfaceView オブジェクトを完成させました。しかし、ロック画面に移植すると問題が発生します。ウィンドウ タイプが TYPE_KEYGUARD のロック スクリーンでは、SurfaceView を表示できませんでした。この SurfaceView に setZOrderOnTop(true) を使用すると、表示できますが、ロック画面の他のすべてのレイヤーがオーバーレイされますが、これは私の予想ではありません。この SurfaceView は、通常のアプリケーションでは正常に表示できます。「adb shell dumpsys SurfaceFlinger」を使用してレイヤー情報をダンプしました。その visibleRegionScreen はそのまま、 Region visibleRegionScreen (this=0x15841a0, count=1) [ 0, 0, 0, 0]

この問題を解決してロック画面に SurfaceView を表示する方法を知っている人はいますか? どうもありがとう。

4

2 に答える 2

0

あなたは setZOrderOnTop(true) 呼び出しについて正しいですが、私はあなたの質問を本当に理解していません。画面全体に SurfaceView しか表示されていませんか? その場合は、ロック画面レイアウト xml に LinearLayout を配置し、それに Surfaceview を追加します。

デジタル時計ビューの後にkeyguard_screen_tab_unlock.xmlに次のように入力します。

<LinearLayout
        android:id="@+id/dummyGLLayout"
        android:orientation="vertical"
        android:layout_width="match_parent"
         android:layout_height="wrap_content"
        android:gravity="top">
</LinearLayout>

LockScreen.javaコンストラクター:

GLSurfaceView mySurfaceView
mySurfaceView = new MySurfaceViewClass(mContext);
LinearLayout ll = (LinearLayout) findViewById(R.id.dummyGLLayout);
mySurfaceView.setZOrderOnTop(true);
ll.addView(mySurfaceView);
于 2012-12-13T18:55:12.583 に答える
0

コメントありがとうございます。参照用に私の実装を添付してください。GLSurfaceView をロック画面に表示できませんでした。私のレイアウトは次のとおりです。

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

<FrameLayout
    android:id="@+id/my_lockscreen_clock"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true" 
    android:visibility="gone"/>

LockScreen.java コンストラクターに GLSurfaceViewn を追加します。

RelativeLayout mRootLayout = (RelativeLayout) findViewById(R.id.my_lockscreen_root);
View myGLSurfaceView = new MyGLSurfaceView(mContext, mCallback);
FrameLayout.LayoutParams layoutparams = 
   new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
mRootLayout.addView(mUnlockWidget, 0, layoutparams);
于 2012-12-15T04:20:05.460 に答える