با کد زیر در پروژه collapsing toolbar رنگ غالب بک گراند تولبار پیدا شده و برای تولبار ست میشود.
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg2);
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
@Override
public void onGenerated(@Nullable Palette palette) {
if (palette != null) {
collapsingToolbar.setContentScrimColor(palette.getMutedColor(R.attr.colorPrimary));
}
}
});
نکته: دپندنسی زیر باید در گریدل اضافه شه:
implementation 'androidx.palette:palette:1.0.0'
با اضافه کردن کد زیر در اکتیویتی میشه فلش بک رو توی تولبار که بهش HomeAsUp گفته میشه رو اضافه کرد.
actionBar.setDisplayHomeAsUpEnabled(true);
تغییر آیکون این دکمه:
actionBar.setHomeAsUpIndicator(R.drawable.ic_back);
جهت ست کردن تسک برای این دکمه:
روش اول:
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId()==android.R.id.home){
Toast.makeText(this, "home as up is clicked!", Toast.LENGTH_SHORT).show();
onBackPressed();
}
return super.onOptionsItemSelected(item);
}
اینجا با تاچ کردن این دکمه، toast نمایش داده میشه و اکتیویتی به عقب برمیگرده (کار دکمه بک انجام میشه)
روش دوم:
اوور راید کردن متد زیر در اکتیویتی (بنظرم روش بهتریه):
@Override
public boolean onSupportNavigateUp() {
onBackPressed();
return super.onSupportNavigateUp();
}
توجه: اگر از پاپ آپ منو استفاده بشه، روش دوم جواب نمیده و باید از روش اول استفاده کرد (یعنی باید توی سوییچ همراه با باتن های منو تسک این باتن رو هم ست کنیم)
نکته: اگر از تولبار استفاده میشه (که اکثر اوقات میشه و تم NoActionBar هست) در این صورت حتما اول باید
setSupportActionBar(toolbar);
نوشته بشه وگرنه ارور نال پوینتر میده چون اکشن باری وجود نداره.
AppBarLayout تولبار کشیدنیه! یعنی این شکلی
AppBarLayout یک لینیر لیوت از نوع عمودی هست. پرنت این لیوت حتما باید coordinator layout باشه تا انیمیشنش ایجاد شه.
width این لیوت رو match_parent و height اون رو معمولا 300dp میذارن.
داخل این ویو، CollapsingToolbarLayout قرار میگیره. داخل این هم imageView برای بک گراند و Toolbar قرار میگیرن.
اتریبیوت های لازم رو توی کد توضیح میدم.
نکته دیگه اینه که ادامه اپلیکیشن، یعنی بعد از CollapsingToolbarLayout، حتما باید توی NestedScrollView قرار بگیره.
اگر بخواهیم توی CollapsingToolbarLayout ویویی قرار بدیم، باید از اتریبیوت های app:layout_anchor و layout_anchorGravity استفاده کنیم.
اتریبیوت
android:fitsSystemWindows="true"
که عمدتا توی coordinator layout استفاده میشه زمانی کاربرد داره که status bar و navigation bar رو توی تم توسط عبارات زیر transparent کرده باشیم.
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
حالا کار این اتریبیوت چی هست؟ کل ویو رو توی فول اسکرین فیت میکنه (یعنی status bar و navigation bar رو در نظر نمیگیره)
اینجا کامل توضیح داده به زبان چینی :)) با گوگل ترنسلیت بزن به فارسی
حالا اگر اون کدا رو توی تم نوشتیم، برای اینکه کامل استاتوس بار هاید شه باید یه سری کد توی اکتیویتی بنویسیم که اینجا گفته
سایت برای آیکون:
https://materialdesignicons.com
فونت های زیبا و رایگان:
متن dummy:
بررسی میکنه که json نوشته شده ولید هست یا خیر:
https://androidacademic.blogspot.com
ساخت لوگوی رایگان
https://www.freelogodesign.org
توی این سایت پروژه و کتابخونه های خوبی پیدا میشه
رنگ های متریال دیزاین رو نشون میده و میشه پالت رنگ کلی برای اپ انتخاب کرد.
https://www.materialpalette.com
سازنذه آیکون های مختلف (لانچر، تولیار، نوتیفیکیشن و اینا) برای اندروید
https://romannurik.github.io/AndroidAssetStudio/index.html
سایت جدید مورد علاقم:
سورس های رایگان
تبدیل json به کلاس pojo
دستورات کلیدی گیت
https://www.tejariapp.com/git-commands/
Dummy rest API
http://dummy.restapiexample.com
معرفی دیزاین پترن ها همراه با نمونه کد
https://sourcemaking.com/design_patterns
اپلیکیشن های اندرویدی همراه با سورس کد
https://androidexample365.com/
معرفی منابع خوب برای یادگیری اندروید
https://womendotcode.be/blog/learn-to-code-the-next-steps-in-android-development/
API فیک
API رایگان آشپزی
فیک API
اگر محتوایی که توی اسکرول ویو قرار میگیره اندازه اسکرین باشه، برای اینکه خوب نشون داده بشه باید اتریبیوت زیر رو تعریف کنیم:
android:fillViewport="true"
اگر محتوا بزرگتر از صفحه بود مهم نیست این اتریبیوت باشه یا نه.
اینجا با مثال قشنگ توضیح داده.
برای لود کردن عکس دو تا متد وجود داره:
1.
imageID.setImageResource(int id);
2.
imageID.setImageDrawable(context.getResources().getDrawable(int id))
این برای کلاس هایی غیر اکتیویتی استفاده میشه.
ID همون ...R.drawable هست.