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

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

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

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

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

۲۵۸ مطلب با موضوع «آموزش اندروید» ثبت شده است

برای تغییر رنگ پراگرس بار، باید توی فایل styles، واسش یه استایل کاستوم تعریف کنیم:

 

<style name="ProgressBarTheme" parent="Widget.AppCompat.ProgressBar">

    <item name="android:indeterminateTint">#BBE6FF</item>

</style>

و بدین شکل توی پراپرتی های xml براش ست کنیم:
 

style="@style/ProgressBarTheme"
۰ نظر موافقین ۰ مخالفین ۰ ۱۱ اسفند ۰۳ ، ۱۲:۰۶
میم دال

امضای دیجیتال (Signing) در اپلیکیشن‌های اندرویدی فرآیندی است که به تایید اصالت و یکپارچگی فایل APK کمک می‌کند.

 

وقتی یک برنامه اندروید (فایل APK) ساخته می‌شود، نیاز است که امضا شود. این امضا برای موارد زیر ضروری است:

  1. تایید اصالت توسعه‌دهنده: نشان می‌دهد که این فایل APK از یک توسعه‌دهنده خاص آمده است.
  2. یکپارچگی فایل: تضمین می‌کند که فایل APK بعد از امضا تغییر نکرده است.
  3. انتشار در فروشگاه Google Play: برنامه‌ها باید امضا شوند تا در Google Play منتشر شوند.
  4. به‌روزرسانی برنامه: وقتی برنامه‌ای در دستگاه نصب می‌شود، نسخه‌های جدیدتر آن باید با همان کلید امضا شوند تا به‌روزرسانی انجام شود.

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

1. سینگل تون

 

2. بیلدر (با توجه به وجود named constructor و کلاس data در کاتلین این دیزاین پترن معنی نداره)

 

3. فکتوری

 

4. dependency Injection (DI)

 

5. Facade:

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

 

6. Adapter:

این دیزاین پترن برای اتصال دو کلاس با ساختارهای متفاوت استفاده می شود. به عبارت دیگر، یک میانجی بین دو ساختار دیگر است. این میانجی تغییرات لازم را روی داده های سورس انجام میده تا در مقصد نشون داده بشه بدون اینکه داده های اصلی تغییر پیدا کنه. مثل اداپتر در ریسایکلر ویو که لیستی از داده های منبع که عموما لیست یا آرایه هست را به view holder که قابل نمایش برای ریسایکلر ویو است را تبدیل میکند.

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

در کاتلین دو نوع لیست mutable و immutable وجود داره.

لیست immutable:

 val mylist = listOf("1","2","3")

 

لیست mutable:

سه روش برای ایجاد این نوع لیست وجود داره:

        val mylist = ArrayList<String>()

        val mylist1 = mutableListOf<String>()

        val mylist2 = arrayListOf<String>()

این سه تا فرقی با هم ندارن.

 

 

 

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

آرایه:

دو نوع روش برای ایجاد آرایه وجود داره. در روش اول باید سایز آرایه و مقدار اولیه اون مشخص بشه. در روش دوم فقط باید مقدار اولیه مشخص بشه. هر دو mutable هستن، یعنی میشه یه عضو از آرایه را تغییر داد. اما طول آرایه قابل تغییر نیست.

 

val myArray = Array<Int>(5){0}

val myArray = arrayOf("1", "2")

۰ نظر موافقین ۰ مخالفین ۰ ۲۲ آذر ۰۲ ، ۱۴:۵۸
میم دال

کلاس جنریک:

class ArrayUtil<T>(private val array : Array<T>) {

    fun findElement(element : T, foundElement:(index: Int, element: T?)->Unit){

        for(i in array.indices){

            if(array[i] == element){
                foundElement(i, element)
                return
            }
        }

        foundElement(-1, null)
        return

    }

}

۰ نظر موافقین ۰ مخالفین ۰ ۲۰ آذر ۰۲ ، ۱۶:۳۷
میم دال

gradle یک ابزار بیلد اتوماتیک هست برای بیلد اپلیکیشن ها، مثل اپ های اندرویدی. توسط پلاگین gradle امکان استفاده از gradle در اندروید استودیو فراهم می شود.

۰ نظر موافقین ۰ مخالفین ۰ ۱۸ آذر ۰۲ ، ۱۴:۴۴
میم دال

1. توسط پلاگین gradle امکان استفاده از gradle در اندروید استودیو ایجاد میشه. پس ما برای هر پروژه باید پلاگین gradle و خود gradle رو اضافه کنیم.

 

2. دو تا build.gradle داریم. یکی در "کل پروژه" و یکی "برای هر ماژول". ممکنه پروژه ما چند تا ماژول داشته باشه، در این صورت به ازای هر ماژول یک build.gradle داریم که توش اطلاعات در مورد پلاگین ها، وابستگی ها و مین و ماکس sdk و کامپایل و اینا توضیح داده شده.

توی build.gradle در سطح پروژه، classpathها (مثل کاتلین، gradle، هیلت و ...) آورده میشه و یک سری تسک هایی که gradle انجام میده رو میشه در این قسمت آورد. این تنظیمات برای کل پروژه اعمال میشه.

نکته: هر چی توی classPath آوردیم، پلاگین هم داره!

 

3. اگر کل پروژه به یه وابستگی نیاز داشته باشه در buildScript در قالب classPath بهش میدیم. اگر ماژول به وابستگی نیاز داشته باشه در dependencies بهش میدیم.

 

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۶ آذر ۰۲ ، ۱۷:۵۰
میم دال

برای اینکه دو تا ریکوئست پشت سر هم بزنیم، میشه از اپراتور flatMap توی rx استفاده کرد. آبجکتی که روی آن flatMap رو صدا میکنیم، باید observable باشه.

برای این کار خروجی دو تا ریکوئست رو از نوع observable تعریف میکنیم. روی ریسپانس ریکوئست اول flatMap میزنیم. flatMap توی ورودی یه فانکشن میگیره. ریسپانس ریکوئست اول ورودی این فانکشن هست. در واقع در بادی این فانکشن میشه روی ریسپانس ریکوئست اول manipulate انجام داد. در نهایت ریکوئست دوم رو return میکنیم و subscribe انجام میدیم. اگر ریکوئست اول به ارور بخوره، دومی انجام نمیشه و میره توی onError.

 

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

توی این سایت اگر json رو بدی کلاس مدل رو برات جنریت میکنه:

 

https://app.quicktype.io/

 

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