Bu derste material designda tema konusundan ve tasarımlarımızın geriye yönelik uyumluluğu nasıl sağlayacağımızdan bahsettim.
Siz eğer sadece v21 ve sonrasında olan özellikleri kullanan bir uygulama yapıyorsanız ilgili klasörleri (layout, values vb..) buna uygun şekilde ayırmanız gerekir. Tıpkı landscape mod için ayrı bir layout klasörü tanımladığımız gibi(layout-v21)
Tabi burda önemli olan nokta klasörleri ayırdıktan sonra içine yazacağınız dosya isimlerinin birebir aynı olması gerekir. (layout klasöründe activity_main.xml var ise layout-v21 klasöründe de activity_main.xml olarak tanıtılmalı)
Bu ayrımı yaparsanız android işletim sistemi çalışma anında cihazın versiyonuna göre ilgili klasörü okuyacaktır.
Sizin eğer values ve values-v21 diye iki ayrı klasörünüz varsa cihazın apisi 21den önce ise values, 21 ve sonrasıysa values-v21 klasörü okunur. Bu sayede uygulamanızı hem güncel hem de geriye yönelik çalışacak şekilde tasarlayabilirsiniz.
XML ile uyumluluğu bu şekilde ele alabildiğimiz gibi java koduyla da api kontrolü sağlayabiliriz.
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {} else {}
diyerek api değeri lollipop yani api21 ve sonrasında olan cihazlarda bu kodları çalıştır aksi taktirde else kısmını çalıştır diyebiliriz.
1 2 3 4 5 6 7 8 9 10 |
<resources> <style name="MyMaterialTheme" parent="ParentMaterialTheme"> </style> </resources> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<resources> <style name="MyMaterialTheme" parent="ParentMaterialTheme"> </style> <!-- Base application theme. --> <style name="ParentMaterialTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <!-- Toolbar rengi.500 seçilir --> <item name="colorPrimary">@color/colorPrimary</item> <!-- Statusbar rengi. 700 seçilir --> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <!-- ikinci ana renk. Ayrıca checkbox, radio button da da kullanılır --> <item name="colorAccent">@color/colorAccent</item> <!-- Butonların rengi. --> <item name="colorButtonNormal">@color/colorButtonNormal</item> <!-- ripple efektinin rengi rengi. --> <item name="colorControlHighlight">@color/colorControlHighlight</item> <!-- Edittext altçizgi rengi, radio button,switch ve checkbox activated rengi --> <item name="colorControlActivated">@color/colorControlActivated</item> </style> </resources> |