آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

۶ مطلب در بهمن ۱۴۰۲ ثبت شده است

در برنامه نویسی imperative باید step by step مشخص کنیم چیا میخوایم. (How) - در این حالت مثلا میگیم میخوایم فلان تکست توی textView نمایش داده بشه

 

در برنامه نویسی declarative فقط میگیم چیا میخوایم. (What) - در این حالت state داریم و میگیم قراره state تکست جدیدی رو نشون بده.

 

مثال imperative programming:

 

        val list = listOf(1, 2, 20, 3, 4, 25, 5)

        val newList: MutableList<Int> = ArrayList()

        for (i in list) {
            if (i < 10) {
                newList.add(i)
            }
        }

        Log.d(TAG, "imperative newList: $newList")

 

مثال declarative programming: 

Log.d(TAG, "declarative newList: ${list.filter { i -> i < 10 }.toList()}")

 

۰ نظر موافقین ۰ مخالفین ۰ ۳۰ بهمن ۰۲ ، ۰۴:۴۵
میم دال

1. چنل Canary: این چنل unStable ترین هست و زود به زود (هفتگی) آپدیت میشه. برای اینه که یوزرا متوجه بشن چیا جدید اومده ولی این نسخه اصلا مناسب پروداکشن نیست.

 

2. چنل Dev: نسخه این کانال از Canary با ثبات تر هست. به روز رسانی هایی کمتر از Canary داره و مناسب توسعه دهندگانی است که میخواهند قبل از انتشار عمومی، نسخه های جدید اندروید استودیو را آزمایش کنند. مناسب پروداکشن نیست.

 

3. چنل Beta: این چنل شامل نسخه ای است که به طور کامل آزمایش شده و آماده انتشار عمومی هست. اما ممکن است شامل تمام ویژگی های جدید نباشد.

 

4. چنل Stable: نسخه پایدار که مناسب پروداکشن و تمامی کاربران است.

۰ نظر موافقین ۰ مخالفین ۰ ۳۰ بهمن ۰۲ ، ۰۲:۳۶
میم دال

Modifier یکی از مهم ترین Composableها هست که میتونه ویژگی های زیادی رو برای دیزاین در اختیار ما بذاره. در compose، ترتیب (order) قرار گرفتن پراپرتی های Modifier مهمه و میتونه نتیجه رو تغییر بده. این مثال نشون میده که چجوری جا به جایی padding میتونه در جواب نهایی تاثیر داشته باشه.

 

Modifier کاستوم شده

fun Modifier.socialMedia(): Modifier = composed {
    if (isSystemInDarkTheme()) {
        this
            .border(shape = RoundedCornerShape(16.dp), width = 2.dp, color = BlueGray)
            .background(Color.Transparent)

    } else {
        this
            .border(shape = RoundedCornerShape(16.dp), width = 2.dp, color = LightGray)
            .background(LightBlueWhite)

    }

}

this همون آنجکت Modifier هست که میتونه نوشته نشه.

 

اطلاعات بیشتر

۰ نظر موافقین ۰ مخالفین ۰ ۲۶ بهمن ۰۲ ، ۰۴:۱۷
میم دال
fun TextCompose_3() {

    Box(
        modifier = Modifier
            .fillMaxSize()
            .background(Color.Black),
        contentAlignment = Alignment.Center,
    ) {
        val annotatedString = buildAnnotatedString {
            blueGradientText("Hello")
            append("\n\n")
            pinkBlueGradientText("Maryam")
            append("\n\n")

        }

        Text(text = annotatedString)
    }
}

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ بهمن ۰۲ ، ۰۲:۳۶
میم دال

TextButton: 

 

TextButton(onClick = { /*TODO*/ }) {
                        Text(text = "Click!")
                    }

 

IconButton:

   IconButton(onClick = { /*TODO*/ }) {
                        Icon(painter = painterResource(id = R.drawable.directions_bike_24), contentDescription = null)

                    }

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ بهمن ۰۲ ، ۰۲:۱۷
میم دال

یک Button که در وسط یک Box قرار گرفته است.

۰ نظر موافقین ۰ مخالفین ۰ ۱۲ بهمن ۰۲ ، ۰۲:۱۵
میم دال