Androidの表示レイヤーと画面常駐型アプリの話
- 7. 実装例
mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.window, null);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
mWindowManager.addView(view, params);
※ServiceのonStartとかで
- 8. 実装例
mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.window, null);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
mWindowManager.addView(view, params);
このへんがポイント
レイヤーはTYPE_TOASTかTYPE_SYSTEM_ALERT辺りを使うのが無難?
- 9. 動作例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
-省略- >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="はろーうぃんどう"
android:padding="16dp"
android:textColor="#000000" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="閉じる"
android:textColor="#000000" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="EditText" >
</EditText>
</LinearLayout>
- 13. 実装例
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getId() == mView.getId()) {
mWindowManager.updateViewLayout(mView, mNotFocusableParams);
} else if (v.getId() == R.id.editText1) {
mWindowManager.updateViewLayout(mView, mFocusableParams);
}
return false;
}