وضع Android الشامل والتوافق مع الإصدارات السابقة
-
21-12-2019 - |
سؤال
أريد أن يكون تطبيقي غامرًا عندما يكون ذلك مناسبًا وأن يحاكي بعض الوظائف عندما تكون واجهة برمجة التطبيقات منخفضة جدًا.هل هذه طريقة مناسبة للقيام بذلك؟هل هناك طريقة أكثر فعالية؟
private boolean apiTooLowForImmersive = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT){
apiTooLowForImmersive = true;
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
setContentView(R.layout.activity_menu);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus && !apiTooLowForImmersive ) {
getWindow().getDecorView()
.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
);}
}
المحلول
لا، إنها أفضل طريقة للقيام بذلك (أو حسنًا، إنه نفس النظام الذي أستخدمه في طلبي)
مجرد ملاحظة، قم بها apiTooLowForImmersive
static
و public
public static boolean apiTooLowForImmersive = false;
وإعطاء قيمة لها في static
حاجز.
static {
apiTooLowForImmersive =
(Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT);
}
وبهذا، يمكنك استخدام هذا الحقل في كل فصل دراسي وفي كل مرة تحتاج فيها إلى معرفة الكود الآمن للاستخدام.
لا تنتمي إلى StackOverflow