Hava Durumu Uygulaması Yapımı -1

Uygulamamız internete bağlanmak için izin gerektirecektir. Bunun için yeni proje açtığımızda, AndroidManifest.xml dosyasına izin ifadesini eklememiz gerekir.

jSonCevabi()

Adresi ziyaret edelim. Buradaki JSON tipindeki veriyi viewer ile parse edelim.

Uygulamamızda json cevabındaki bir şehre ilişkin veriyi inceleyip hangilerini kullanacağımıza karar verebiliriz. Basitlik açısından aşağıdaki üç tanesini seçip, tasarımı buna göre yapabiliriz. Bunlar;

  • resimleri seçerken kullanacağımız; hava durumu kodu olan id
  • hava durumunun açıklaması olan description
  • sıcaklık bilgisi olan temp’ dir.

Görsel 1

Görsel 2

JSON ayıklama kısmında bu iki bilgiyi ayıklama işlemini yapmak üzere bu yapıyı tekrar inceleyeceğiz.

Görsel Tasarım

Uygulamamızın görsel tasarımı aşağıdaki gibi olacaktır. Arka planda sabit bir resim olacaktır. Bu resmin üzerinde;

  • şehrin adını sol üstteki TextView’de
  • hava durumunun açıklamasını(description) ve sıcaklığı(temp) alttaki TextView’de göstereceğiz.
  • hava durumu kısa özetine(main) göre ise sağdaki gösterilecek resmi seçebiliriz.

Buna göre RelativeLayout içinde activity_main.xml dosyamızı düzenleyebiliriz.

Görsel 3

Görsel 4

Uygulamamızda kullanacağımız resim dosyalarını drawable klasörüne atabiliriz. Bunlardan biri sabit arka plan resmi olacak, diğerleri ise hava durumu özet bilgisine göre gösterebileceğimiz resimler olacaktır.

Görsel 5

Görsel 6

Uygulamada kullanılan resimleri bu adresten temin edebilirsiniz.

Kodlama

Artık MainActivity.java dosyamızda activity_main.xml’deki görselleri tanıtabiliriz.

Bir diğer değişken olarak sehir isminde bir String tanımlayabiliriz. Daha önce internet tarayıcısında incelediğimiz url sorgu stringini de üç stringin uç uca eklenmesi biçiminde tanımlarız.

Böylelikle sorguyu farklı şehirler için değiştirmek istediğimizde, sorgu stringini değiştirmek yerine sehir değişkeninin değerini değiştirmemiz yeterli olacaktır.

Bundan sonraki kısım arkaplanda yapacağımız indirme görevi için AsyncTask sınıfını extend eden bir sınıf tanımlamaktır.

Bu sınıfın adına indirme sınıfı deyip, MainActivity sınıfının içinde dahili bir sınıf olarak tanımlayalım.

  • görevi çalıştırırken (execute), sorgumuzun url stringini vereceğiz. Bu doInBackground() metodunun kabul ettiği parametre tipidir: String
  • doInBackground() metodu çalışırken, publishProgress() metodunu kullanarak onProgressUpdate() metoduna bir değer göndermeyeceğiz. Dolayısıyla ikinci parametre tipi: Void
  • doInBackground() metodu bittikten sonra onPostExecute metoduna indirdiğimiz JSON cevabını göndereceğiz. Dolayısıyla üçüncü parametre tipi: String

Kodumuzun Son Hali :

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir