همون لیوتی که با اسکرول کردن به سمت پایین آیکون پراگرس بار رو نشون میده (مشابه اینستاگرام)
نحوه استفاده:
همون لیوتی که با اسکرول کردن به سمت پایین آیکون پراگرس بار رو نشون میده (مشابه اینستاگرام)
نحوه استفاده:
برای ساخت آیکون لانچر از image asset استفاده میکنیم. در این صورت، مدل های rounded و circle ساخته خواهد شد.
توضیحات کامل اینجا گفته شده.
سایز عکس آیکون ها با کیفیت های مختلف:
برای اینکه بدونیم در حال حاضر دیوایس به اینترنت وصل هست یا خیر از کد زیر استفاده می شود:
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected();
}
نکته مهم اینکه در منیفست باید پرمیشن زیر اضافه شده باشه:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
متدی به نام "onKeyDown" داریم که میشه باهاش هر کلید سخت افزاری که کاربر فشار میده detect کرد.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// back was pressed
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
// volume up was pressed
}
return super.onKeyDown(keyCode, event);
}
توی اندروید استودیوی 4 به بعد باتن پیش فرض باتن متریال دیزاین هست. بنابراین اگر برای کاستوم کردن باتن از روش قبلی استفاده کنیم یعنی shape بسازیم و با اتریبیوت background بدیم باتن تغییری نمیکنه. این روش برای باتن هایی که غیر متریال هستن جواب میده.
برای حل این مشکل دو راه هست:
1. استفاده از باتن غیر متریال و shape
این باتن توی XML اینجوری فراخونی میشه:
android.widget.Button
2. استفاده از باتن متریال و کاستوم کردن باتن به صورت زیر:
app:rippleColor
: The colour to be used for the button ripple effectapp:backgroundTint
: Used to apply a tint to the background of the button. If you wish to change the background color of the button, use this attribute instead of background.
app:strokeColor
: The color to be used for the button stroke
app:strokeWidth
: The width to be used for the button strokeapp:cornerRadius
: Used to define the radius used for the corners of the button
توی معماری MVP، لایه های Model و Presenter نباید Context داشته باشن.
توی لایه Model دیتا رو از API یا دیتابیس میگیریم و ممکنه به Context نیاز پیدا کنیم.
راه حل این مشکل اینه که کلاسی که به Context نیاز داره رو توی یک لایه دیگه abstract کنیم.
اینجا بیشتر توضیح داده.
برای اینکه آیتم های ریسایکلر ویو از هم فاصله داشته باشن (معمولا آیتم ها کارد ویو هستن) در rootکه همون کارد ویو هست اتریبیوت زیر را اضافه میکنیم:
app:cardUseCompatPadding="true"
فرمت تاریخ هایی که از سروی دریافت میکنیم معمولا به صورت زیر است:
2020-03-23T13:58:53Z
T جدا کننده بوده و بیانگر اینه که در ادامه مقدار زمان آمده است. احتمالا مخفف time هست.
Z بیانگر UTC timezone هست.
این نوع بیان تاریخ استاندارد ISO 8601 است.