Manifest設定
- システムレイヤーへの描画は専用のPermissionがある
<uses-permission androidname="android.permission.SYSTEM_ALERT_WINDOW"/>
WindowManagerでViewを登録
- レンダリング用のViewとタップ用のViewを分けると設計が楽になる場合がある
- SurfaceViewは軽量だが、View移動ができない
- Viewを移動するならTextureViewが良い
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_FULLSCREEN
,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;
windowManager.addView(hogeView, params);
WindowManager.LayoutParams params = (WindowManager.LayoutParams) hogeView.getLayoutParams();
synchronized (updateRunner) {
params.x = reqX;
params.y = reqY;
params.width = reqW;
params.height = reqH;
}
windowManager.updateViewLayout(hogeView, params);