সিস্টেম বার সুরক্ষা

একবার আপনার অ্যাপটি SDK 35 বা তার পরে টার্গেট করলে, এজ-টু-এজ প্রয়োগ করা হয় । সিস্টেম স্ট্যাটাস বার এবং জেসচার নেভিগেশন বার স্বচ্ছ, কিন্তু তিন বোতামের নেভিগেশন বার স্বচ্ছ। এই পশ্চাদগামী সামঞ্জস্যপূর্ণ করতে enableEdgeToEdge কল করুন।

যাইহোক, সিস্টেম ডিফল্ট সমস্ত ব্যবহারের ক্ষেত্রে কাজ নাও করতে পারে। কখন স্বচ্ছ বা স্বচ্ছ সিস্টেম বার থাকা বিবেচনা করতে হবে তার একটি ওভারভিউয়ের জন্য অ্যান্ড্রয়েড সিস্টেম বার ডিজাইন নির্দেশিকা এবং এজ-টু-এজ ডিজাইন নির্দেশিকা দেখুন।

স্বচ্ছ সিস্টেম বার তৈরি করুন

Android 15 বা তার পরবর্তী সংস্করণগুলিকে লক্ষ্য করে বা পূর্ববর্তী সংস্করণগুলির জন্য ডিফল্ট আর্গুমেন্ট সহ enableEdgeToEdge() কল করে একটি স্বচ্ছ অঙ্গভঙ্গি নেভিগেশন বার তৈরি করুন৷ তিন-বোতামের নেভিগেশন বারের জন্য, Window.setNavigationBarContrastEnforced কে false সেট করুন অন্যথায় একটি স্বচ্ছ স্ক্রিম প্রয়োগ করা হবে।

স্বচ্ছ সিস্টেম বার তৈরি করুন

একটি স্বচ্ছ স্ট্যাটাস বার তৈরি করতে, একটি কাস্টম কম্পোজেবল তৈরি করুন যা মূল বিষয়বস্তুকে ওভারল্যাপ করে এবং ইনসেট দ্বারা আচ্ছাদিত এলাকায় একটি গ্রেডিয়েন্ট আঁকে৷

class SystemBarProtectionSnippets : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // enableEdgeToEdge sets window.isNavigationBarContrastEnforced = true
        // which is used to add a translucent scrim to three-button navigation
        enableEdgeToEdge()

        setContent {
            MyTheme {
                // Main content
                MyContent()

                // After drawing main content, draw status bar protection
                StatusBarProtection()
            }
        }
    }
}

@Composable
private fun StatusBarProtection(
    color: Color = MaterialTheme.colorScheme.surfaceContainer,
    heightProvider: () -> Float = calculateGradientHeight(),
) {

    Canvas(Modifier.fillMaxSize()) {
        val calculatedHeight = heightProvider()
        val gradient = Brush.verticalGradient(
            colors = listOf(
                color.copy(alpha = 1f),
                color.copy(alpha = .8f),
                Color.Transparent
            ),
            startY = 0f,
            endY = calculatedHeight
        )
        drawRect(
            brush = gradient,
            size = Size(size.width, calculatedHeight),
        )
    }
}

@Composable
fun calculateGradientHeight(): () -> Float {
    val statusBars = WindowInsets.statusBars
    val density = LocalDensity.current
    return { statusBars.getTop(density).times(1.2f) }
}

চিত্র 1. একটি স্বচ্ছ স্ট্যাটাস বার।

অভিযোজিত অ্যাপগুলির জন্য, একটি কাস্টম কম্পোজেবল সন্নিবেশ করুন যা প্রতিটি ফলকের রঙের সাথে মেলে, যেমনটি এজ-টু-এজ ডিজাইনে দেখা যায়। একটি স্বচ্ছ নেভিগেশন বার তৈরি করতে, Window.setNavigationBarContrastEnforced সত্যে সেট করুন।