는 토스트와 대화 상자 창 같은 사물이 작동하는 방법이다 (FaceUnlock이이를 수행합니다.) 또는 계층 구조에 의존 할 수 없으면 창 관리자와 창 토큰을 사용하여 트릭을 수행해야합니다. 그런 다음 레이아웃을 생성하고 이전과 같이 애니메이션 및 하드웨어 가속을 활용할 수 있습니다.
WindowManager windowManager = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.FIRST_SUB_WINDOW);
layoutParams.width = 300;
layoutParams.height = 300;
layoutParams.format = PixelFormat.RGBA_8888;
layoutParams.flags =
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
layoutParams.token = getWindow().getDecorView().getRootView().getWindowToken();
//Feel free to inflate here
mTestView = new View(this);
mTestView.setBackgroundColor(Color.RED);
//Must wire up back button, otherwise it's not sent to our activity
mTestView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
}
return true;
}
});
windowManager.addView(mTestView, layoutParams);
그런 다음 뷰들의 OnDestroy를 제거해야합니다 (또는 onPause)가 될하거나
if (mTestView != null) {
WindowManager windowManager = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE);
if (mTestView.isShown()) {
windowManager.removeViewImmediate(mTestView);
}
}
이 질문에 대한 답변보기 : http://stackoverflow.com/questions/2176922/how-to-create-transparent-activity-in-android – Jules
투명 터치 이벤트를 사용하지 않으시겠습니까? – Allahjane
예,하지만 다른 활동의 맨 위에 그리는 경우 원하는 내용입니다. 사용자가 내 조언이 될 수있는 바깥에 접촉하면보기를 닫습니다. – Jules