- Adım
- kasim
- Cihazım
- Redmi Note9 Pro
- Meslek
- Öğretmen
- Konum
- Çorum
- Katılım
- 14 Kasım 2020
- Konular
- 25
- Mesajlar
- 462
- Çözümler
- 2
- Tepkime puanı
- 325
- Puanları
- 78
Geliştirmekte olduğunuz temalar için sistem karanlık/aydınlık mod geçişinden bağımsız olarak gece ve gündüz zamanlarını atamanıza olanak sağlar.
Örneğin; sadece karanlık mod veya sadece aydınlık mod için tema geliştiriyor ancak hava durumu simgeleri gibi görselleri gün batımı ve gün doğumuna göre uyarlamak istiyorsanız ya da temanızı kullanan kişinin sürekli tek mod kullanabilecek olma ihtimaline takılmak istemiyorsanız aşağıdaki değişkenleri kodunuza ekleyerek bunu yapabilirsiniz.
VariableBinders içine ekleyin
Eğer bir hava durumu sağlayıcısı zaten ekliyse ve içerisinde sunrise ve sunset değişkenleri tanımlıysa sadece aşağıdaki suffix/düzeltmelerdeki değişken isimlerinin kendi sunrise ve sunset değişkenleriniz ile aynı olmasına dikkat edin!
Lockscreen içine ekleyin, sunrise ve sunset isimlerine dikkat edin!
Burada #weather_sunrise ve #weather_sunset > sizde farklıysa aynı olmalarını sağlayın.
Örnek kullanımlar:
Temanızda kilit ekranı için güneş battığında mevcut duvar kağıdını karartmak için;
* #isDay == 0 yerine not(#isDay) , eq(#isDay,0) vb. yazılabilir.
* Bu dikdörtgenin şeffaflığı 255 üzerinden 80, düşürmek veya artırmak için 'argb(80' değerini değiştirin.
Hava durumu simgelerini ayarlama;
* İsimdeki ilk sayı gündüz/gece döngüsü değerini, ikinci sayı ise hava durumu değerini ifade eder.
-------------
Kuzey/Güney Yarım Küre ve Mevsim Değişkenleri
<VariableBinders/> içine konum erişimi tanımlayın.
Hangi yarım kürede olunduğu belirlenirken;
Mevsimleri belirlemek için önce hangi yarım kürede olunduğu bilgisini aldık. Mevsimleri belirlerken sürekli #month+1 yapmayalım diye
Bu kod parçası ise yarım kürelere göre mevsimleri tanımlıyor.
Ek- 1: 04.10.22
Hava Durumu için ek:
Şu an için temamıza hava durumu widgeti yapmak istediğinizde sadece id'lere göre simgeleri ( karanlık moda ya da yukarıda bahsettiğim yönteme göre uyarlayıp ) kullanabiliyorduk. Ancak dün yeni başladığım temaya hava durumu widgeti yaparken uzun süredir düşündüğüm ayın evrelerini de gösterme özelliğini ( tutarlı ve sistem temelli - yoksa elle veri girerek gayet yapılabilir bir şey ) ekleme işini tamamladım aşağıdaki kodları temanızın kilit ekranı, saat, miwallpaper vb. eklentilerinin manifestlerine ekleyerek test edip kullanabilirsiniz.
Bu kod ayın geçirdiği 30 (esasen yaklaşık 29.5) günlük evreyi nümerik olarak tanımlıyor. Bu kısım aslında sadece resim göstermek için. Örneğin konuya ekleyeceğim moonPhases.zip içindeki evre resimlerini göstermek için.
Eğer ayın evrelerini yazı halinde de belirtmek istiyorsanız manifeste şu iki kodu da eklemeniz gerekiyor.
Bu kısım 30 günlük süreci kabaca ayın 8 evresine nümerik olarak tanımlamaya yarıyor. (yani 30 resim çok ben 8 resim kullanmak istiyorum derseniz bu değişkenle kullanabilirsiniz.)
Bu değişkende de yazı için tanımladığımız değişkenlerle integerleri birbirine bağlıyoruz. Ama her dil için ayrı ayrı değişkenler oluşturmaktansa stringler ( strings, strings_tr_TR vb...) içine şu şekilde ekleyebilirsiniz.
Bu paylaşımlar kendi tasarımcılarımızı yabancı tasarımcılardan bir adım öne geçirebilirse ne mutlu...
Bu birkaç küçük kod sayesinde ayın evrelerini de bu şekilde gösterebilirsiniz.
Örneğin; sadece karanlık mod veya sadece aydınlık mod için tema geliştiriyor ancak hava durumu simgeleri gibi görselleri gün batımı ve gün doğumuna göre uyarlamak istiyorsanız ya da temanızı kullanan kişinin sürekli tek mod kullanabilecek olma ihtimaline takılmak istemiyorsanız aşağıdaki değişkenleri kodunuza ekleyerek bunu yapabilirsiniz.
VariableBinders içine ekleyin
XML:
<!-- weatherServiceProvider -->
<ContentProviderBinder name="WeatherProvider" uri="content://weather/actualWeatherData/1" columns="sunrise,sunset" countName="hasweather">
<Variable name="weather_sunrise" type="int" column="sunrise" />
<Variable name="weather_sunset" type="int" column="sunset" /> </ContentProviderBinder>
Eğer bir hava durumu sağlayıcısı zaten ekliyse ve içerisinde sunrise ve sunset değişkenleri tanımlıysa sadece aşağıdaki suffix/düzeltmelerdeki değişken isimlerinin kendi sunrise ve sunset değişkenleriniz ile aynı olmasına dikkat edin!
Lockscreen içine ekleyin, sunrise ve sunset isimlerine dikkat edin!
Burada #weather_sunrise ve #weather_sunset > sizde farklıysa aynı olmalarını sağlayın.
XML:
<!-- sunriseHour -->
<Var name="sunriseVar1" expression="formatDate('HH',#weather_sunrise)" type="string"/>
<!-- sunriseMinute -->
<Var name="sunriseVar2" expression="formatDate('mm',#weather_sunrise)" type="string"/>
<!-- sunriseTime -->
<Var name="sunriseVar" expression="@sunriseVar1 + @sunriseVar2" type="string"/>
<Var name="sunriseVarInteger" expression="int(@sunriseVar)" type="int"/>
<!-- sunsetHour -->
<Var name="sunsetVar1" expression="formatDate('HH',#weather_sunset)" type="string"/>
<!-- sunsetMinute -->
<Var name="sunsetVar2" expression="formatDate('mm',#weather_sunset)" type="string"/>
<!-- sunsetTime -->
<Var name="sunsetVar" expression="@sunsetVar1+@sunsetVar2" type="string"/>
<Var name="sunsetVarInteger" expression="int(@sunsetVar)" type="int"/>
<!-- hour -->
<Var name="hourVar1" expression="formatDate('HH',#time_sys)" type="string"/>
<!-- minute -->
<Var name="hourVar2" expression="formatDate('mm',#time_sys)" type="string"/>
<!-- currentTime -->
<Var name="hourVar" expression="@hourVar1 + @hourVar2" type="string"/>
<Var name="hourVarInteger" expression="int(@hourVar)" type="int"/>
<!-- dayTimeEdges -->
<Var name="isDay" expression="ifelse(#hourVarInteger }= #sunriseVarInteger**#hourVarInteger {= #sunsetVarInteger, 1, 0)" type="int"/>
Bu kodda #isDay değişkeni 1 iken gündüz, 0 iken gece zamanı olduğunu belirtir.
Örnek kullanımlar:
Temanızda kilit ekranı için güneş battığında mevcut duvar kağıdını karartmak için;
XML:
<!-- darkModeOptim -->
<Rectangle align="center" alignV="center" cornerRadius="0,0" fillColor="argb(80,0,0,0)" w="#sw" h="#sh" x="#sw/2" y="#sh/2" visibility="#isDay == 0" />
* #isDay == 0 yerine not(#isDay) , eq(#isDay,0) vb. yazılabilir.
* Bu dikdörtgenin şeffaflığı 255 üzerinden 80, düşürmek veya artırmak için 'argb(80' değerini değiştirin.
Hava durumu simgelerini ayarlama;
XML:
<Image name="hwImage" alignV="center" srcExp=" 'weather/weather_' + #isDay + '.png' " srcid="#weather_id" w="100" h="100" x="0" y="0" visibility="1" />
* Gündüz simgelerinin ismi > weather_1_1.png < gibi, gece simgelerinin ismi > weather_0_1.png < gibi olmalıdır.Bu resim kodu hava durumu simgelerini hem mevcut duruma hem gece ve gündüze göre ayarlar.
* İsimdeki ilk sayı gündüz/gece döngüsü değerini, ikinci sayı ise hava durumu değerini ifade eder.
-------------
Kuzey/Güney Yarım Küre ve Mevsim Değişkenleri
<VariableBinders/> içine konum erişimi tanımlayın.
XML:
<!-- location -->
<LocationBinder name="locationBinder" type="0" time="7000" distance="10">
<Variable name="location_str" type="string[]"/>
</LocationBinder>
Hangi yarım kürede olunduğu belirlenirken;
XML:
<Var name="myLat" expression="int(@location_str[3])" type="int" />
<Var name="isNorth" expression="ifelse(#myLat } 0 , 1, #myLat { 0, 0 ,2)" type="int" />
#isNorth değişkeni 1 iken Kuzey, 0 iken Güney, 2 iken ekvatorda olunduğunun bilgisini verir.
Mevsimleri belirlemek için önce hangi yarım kürede olunduğu bilgisini aldık. Mevsimleri belirlerken sürekli #month+1 yapmayalım diye
XML:
<Var name="monthSF" expression="#month+1" type="int" />
değişkenini oluşturuyoruz. Normalde 0,1,2.... şeklinde giden ay numaralarını 1,2,3... haline dönüştürdük.
Bu kod parçası ise yarım kürelere göre mevsimleri tanımlıyor.
XML:
<!-- 1=bahar, 2=yaz, 3=sonbahar, 4=kış -->
<Var name="seasonCycle" expression="ifelse(#isNorth == 1, ifelse(#monthSF == 3||#monthSF == 4||#monthSF == 5, 1, #monthSF == 6||#monthSF == 7||#monthSF == 8, 2, #monthSF == 9||#monthSF == 10||#monthSF == 11, 3, 4),
#isNorth == 0, ifelse(#monthSF == 9||#monthSF == 10||#monthSF == 11, 1, #monthSF == 12||#monthSF == 1||#monthSF == 2, 2, #monthSF == 3||#monthSF == 4||#monthSF == 5, 3, 4), 0)" type="int" />
Üstte de gösterildiği gibi 1= bahar, 2= yaz , 3= sonbahar, 4= kış mevsimlerini ifade ediyor.
Ek- 1: 04.10.22
Hava Durumu için ek:
Şu an için temamıza hava durumu widgeti yapmak istediğinizde sadece id'lere göre simgeleri ( karanlık moda ya da yukarıda bahsettiğim yönteme göre uyarlayıp ) kullanabiliyorduk. Ancak dün yeni başladığım temaya hava durumu widgeti yaparken uzun süredir düşündüğüm ayın evrelerini de gösterme özelliğini ( tutarlı ve sistem temelli - yoksa elle veri girerek gayet yapılabilir bir şey ) ekleme işini tamamladım aşağıdaki kodları temanızın kilit ekranı, saat, miwallpaper vb. eklentilerinin manifestlerine ekleyerek test edip kullanabilirsiniz.
XML:
<Var name="moonPhases" expression="ifelse(strContains(formatDate('e',#time_sys), '初一'), 1,
strContains(formatDate('e',#time_sys), '初二'), 2,
strContains(formatDate('e',#time_sys), '初三'), 3,
strContains(formatDate('e',#time_sys), '初四'), 4,
strContains(formatDate('e',#time_sys), '初五'), 5,
strContains(formatDate('e',#time_sys), '初六'), 6,
strContains(formatDate('e',#time_sys), '初七'), 7,
strContains(formatDate('e',#time_sys), '初八'), 8,
strContains(formatDate('e',#time_sys), '初九'), 9,
strContains(formatDate('e',#time_sys), '初十'), 10,
strContains(formatDate('e',#time_sys), '十一'), 11,
strContains(formatDate('e',#time_sys), '十二'), 12,
strContains(formatDate('e',#time_sys), '十三'), 13,
strContains(formatDate('e',#time_sys), '十四'), 14,
strContains(formatDate('e',#time_sys), '十五'), 15,
strContains(formatDate('e',#time_sys), '十六'), 16,
strContains(formatDate('e',#time_sys), '十七'), 17,
strContains(formatDate('e',#time_sys), '十八'), 18,
strContains(formatDate('e',#time_sys), '十九'), 19,
strContains(formatDate('e',#time_sys), '二十'), 20,
strContains(formatDate('e',#time_sys), '廿一'), 21,
strContains(formatDate('e',#time_sys), '廿二'), 22,
strContains(formatDate('e',#time_sys), '廿三'), 23,
strContains(formatDate('e',#time_sys), '廿四'), 24,
strContains(formatDate('e',#time_sys), '廿五'), 25,
strContains(formatDate('e',#time_sys), '廿六'), 26,
strContains(formatDate('e',#time_sys), '廿七'), 27,
strContains(formatDate('e',#time_sys), '廿八'), 28,
strContains(formatDate('e',#time_sys), '廿九'), 29,
strContains(formatDate('e',#time_sys), '三十'), 30, '0')" type="int" />
Bu kod ayın geçirdiği 30 (esasen yaklaşık 29.5) günlük evreyi nümerik olarak tanımlıyor. Bu kısım aslında sadece resim göstermek için. Örneğin konuya ekleyeceğim moonPhases.zip içindeki evre resimlerini göstermek için.
Eğer ayın evrelerini yazı halinde de belirtmek istiyorsanız manifeste şu iki kodu da eklemeniz gerekiyor.
XML:
<Var name="moonPhasesVar" expression="ifelse(#moonPhases == 1||#moonPhases == 2||#moonPhases == 29||#moonPhases == 30, 1,
#moonPhases == 3||#moonPhases == 4||#moonPhases == 5, 2,
#moonPhases == 6||#moonPhases == 7||#moonPhases == 8||#moonPhases == 9, 3,
#moonPhases == 10||#moonPhases == 11||#moonPhases == 12||#moonPhases == 13, 4,
#moonPhases == 14||#moonPhases == 15||#moonPhases == 16||#moonPhases == 17, 5,
#moonPhases == 18||#moonPhases == 19||#moonPhases == 20, 6,
#moonPhases == 21||#moonPhases == 22||#moonPhases == 23||#moonPhases == 24, 7,
#moonPhases == 25||#moonPhases == 26||#moonPhases == 27||#moonPhases == 28, 8, '0')" type="int" />
Bu kısım 30 günlük süreci kabaca ayın 8 evresine nümerik olarak tanımlamaya yarıyor. (yani 30 resim çok ben 8 resim kullanmak istiyorum derseniz bu değişkenle kullanabilirsiniz.)
XML:
<Var name="moonPhasesText" expression="ifelse(#moonPhasesVar == 1, @mPhase1,
#moonPhasesVar == 2, @mPhase2,
#moonPhasesVar == 3, @mPhase3,
#moonPhasesVar == 4, @mPhase4,
#moonPhasesVar == 5, @mPhase5,
#moonPhasesVar == 6, @mPhase6,
#moonPhasesVar == 7, @mPhase7,
#moonPhasesVar == 8, @mPhase8, 'No data')" type="string" />
Bu değişkende de yazı için tanımladığımız değişkenlerle integerleri birbirine bağlıyoruz. Ama her dil için ayrı ayrı değişkenler oluşturmaktansa stringler ( strings, strings_tr_TR vb...) içine şu şekilde ekleyebilirsiniz.
XML:
<string name="mPhase1">Yeni ay</string>
<string name="mPhase2">Şişkin hilal</string>
<string name="mPhase3">İlk dördün</string>
<string name="mPhase4">Şişkin gibbous</string>
<string name="mPhase5">Dolunay</string>
<string name="mPhase6">Azalan gibbous</string>
<string name="mPhase7">Son dördün</string>
<string name="mPhase8">Azalan hilal</string>
Bu paylaşımlar kendi tasarımcılarımızı yabancı tasarımcılardan bir adım öne geçirebilirse ne mutlu...
Bu birkaç küçük kod sayesinde ayın evrelerini de bu şekilde gösterebilirsiniz.
Resimleri görmek için giriş yapmanız gerekmektedir.
Son düzenleme: