Toast ve iletişim pencere gibi işlerin nasıl olduğunu (FaceUnlock bunu yapar) veya hiyerarşilere güvenemezsiniz, hile yapmak için pencere yöneticisini ve bir pencere belirtecini kullanmanız gerekir. Daha sonra, düzenleri oluşturabilir ve daha önce olduğu gibi animasyon ve donanım hızlandırmasından yararlanabilirsiniz.
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);
Sonra görünümü OnDestroy kaldırmak için emin (veya OnPause) olmak veya
if (mTestView != null) {
WindowManager windowManager = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE);
if (mTestView.isShown()) {
windowManager.removeViewImmediate(mTestView);
}
}
Bu sorunun yanıtına bakın: http://stackoverflow.com/questions/2176922/how-to-create-transparent-activity-in-android – Jules
Tüm saydam olayları şeffaf olarak kullanamazsınız? – Allahjane
Evet, ancak başka bir etkinliğin tepesine çekiyorsanız, genellikle istediğiniz şey budur. Kullanıcı dışarıya dokunursa görüşünüzü reddedin benim tavsiyem olur. – Jules