手元で詳しくデバッグを行ったわけではないので、詳細は不明。
あくまで参考情報として書いておきます。
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( 300, 300, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_FULLSCREEN, PixelFormat.TRANSLUCENT ); WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); windowManager.addView(view, layoutParams); // Viewは任意
すると、一部端末(具体的には友人の"Medias N-04C" Android ver 2.3.3)でViewが表示されないと報告を受けました。
ちなみに、手元にある"Galaxy SIII"、"Galaxy S"、PC内のAndroid エミュレータ(Android 4.0.3、 Android 2.3.3)ではViewが表示されてます。
いろいろ試した結果、単純に「WindowManager.LayoutParams.FLAG_FULLSCREEN」をLayoutParamsの指定から取り除いたところ、Viewが表示されるようになったとのこと。
layoutParamsの指定部分
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( 300, 300, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, PixelFormat.TRANSLUCENT );
そもそも、フルスクリーン(ステータスバーが非表示になる)を目的としていないのに入っていたことも問題なのですが、これほど動作に差がでるとは思っていませんでした。
Web上にあるサンプル等では"FLAG_FULLSCREEN"が含まれているケースも多いですが、「端末によって挙動が違う・・・」という方はもしかしたらこの部分の変更で表示が行えるかもしれません。
0 件のコメント:
コメントを投稿