آموزش ایجاد حالت شب و روز در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ایجاد حالت شب و روز در برنامه نویسی اندروید می پردازیم شاید شما یک برنامه مانند کتاب درست کردید و خواستید برای راحتی کاربر حالت شب و روز را در آن پیاده سازی کنید تا چشمان کاربر هنگام مطالعه در شب اذیت نشود برای این کار در ادامه با ما همراه باشید.
مثل همیشه ابتدا باید کتاب خانه آن را در برنامه قرار دهیم
پس برای اینکار ابتدا وارد فایل Build.gradle شده نوع module سپس خط زیر را در Dependencies اضافه کنید.
1 | compile 'com.asha.nightowllib:nightowllib:0.2' |
سپس پروژه را sync کرده (علت خطاهای گریدل را قبلا بررسی کرده ایم در سایت جستجو کنید)
برای استفاده از باید کمی دقت کنید و همانند زیر عمل کنید فکر کنید ما یک اکتیویتی داریم که نام آن DemoActivity است پس برای اینکه امکان تغییر حالت (شب و روز) وجود داشته باشد باید مثل زیر اکتیویتی خودتان را ویرایش کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class DemoActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { NightOwl.owlBeforeCreate(this); super.onCreate(savedInstanceState); setContentView(R.layout.activity_demo); NightOwl.owlAfterCreate(this); } @Override protected void onResume() { super.onResume(); NightOwl.owlResume(this); } } |
شما باید قبل از Oncreate کد NightOwl.owlBeforeCreate قرار دهید. سپس بعد از setContentview کد NightOwl.owlAfterCreate و یک onResume درست کردیم تا برنامه هنگام تغییر crash ندهد.
تا اینجا هنوز کاری نکردیم حالا باید در layout خود هر object را که می خواهید رنگش در حالت شب تغییر کند ایجاد کنید مثلا می خواهیم رنگ یک Textview در شب برابر با نفره ای باشد پس همانند زیر برای textview خود حالت night را تعریف می کنیم (برای هر object که بخواهید می توانید آن را تعریف کنید)
1 2 3 4 5 6 7 | <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/large_text" android:textColor="#000000" night:night_textColor="#999999" /> |
حالا برای اینکه تغییرات اعمال شود باید در هر جایی که می خواهید کد زیر را اجرا کنید (ما در یک دکمه این کار را انجام داده ایم)
1 2 3 4 5 6 7 | View v = findViewById(R.id.button); v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { NightOwl.owlNewDress(DemoActivity.this); } }); |
فقط دقت کنید حالت night در layout به چندین بخش تقسیم می شود
در متن برابر با night_textColor است.
در EditText برای hint آن برابر با night_textColorHint است.
در عکس هم برابر با night_src است.
برای listView برابر با night_listSelector است
برای خط listView یا Divider برابر با night_divider است.
برای Layout های مختلف برای تغییر بگراند آن برابر با night_background است.
این آموزش هم به پایان رسید.
موفق باشید.
کدها و به صورت دقیق نوشتم و برنامه رو اجرا کردم داخل اکتیویتی که کدها رو نوشتم و وارد شدم ولی متوقف شد
بخش گردل را درست انجام دادین؟
سلام اگه بخواهیم تمام قسمت های برنامه به حالت شب و روز در بیاد
مثلا برنامه 10تا اکتیویتی داره و میخواهیم با ی کلیک تمام اکتیوتی ها حالت شب بشه
چندتا برنامه دیدم اینجوری بود
تو بخش لایوت مشخص میکنید ابجکت هایی که میخواین تغییر کند.میتونید چندین ابجکت یا لایوت رو مشخص کنید.
وقتی که مشخص کردیم
باید داخل این کد اسم تمام اکتیویتی ها رو یکی بنویسیم مثل این کد؟
NightOwl.owlNewDress(DemoActivity.this);
و اینکه تنظیمات ذخیره میشه بعد از بستن برنامه؟
سلام بله مثلا خیر ذخیره نمیشه باید خودتون آن را ذخیره کنید مثلا در Shareperfrence یا Database
موفق باشید.
من کدهارو نوشتم و وقتی برنامه رو اجرا کردم متوقف شد!! چطوری این مشکل رو رفع کنم؟؟؟
برنامه رو وقتی اجرا میکنم متوقف میشه چیکار کنم؟؟؟؟
خطا چیست بخش Log رو بررسی کنید.
خطایی پیدا نکردم، میشه کدهاش رو بنویسین و به صورت سورس بهم بدین
مهندس کجایی کمکم کن
سلام
برای رفع مشکل کد NightOwl.builder().defaultMode(0).create(); رو اضافه کنید قبل از NightOwl.owlBeforeCreate(this);
سلام خسته نباشید
آغا من هرکاری میکنم نمیتونم درستش کنم به این خط از کد توی فایل xml گیر میده و خطا میگیره لطفا کمکم کنید.
night:night_textColor=”#999999″
سلام و خدا قوت
من یک نویگیشن بار ساختم و داخل اون یک سوییچ باتن گذاشتم برای نایت مود ولی توی جاواکلاس فرگمنت وقتی میخوام کد
NightOwl.owlNewDress(DemoActivity.this);
رو بزارم ارور میده دلیلشم اینه که نمیدونم چطور مسیر مین اکتیویتی رو بهش بدم
اگه میشه راهنماییم کنید .ممنون