-
Title:
02-12 Fixing_Overdraw_with_Canvas_API
-
Description:
02-12 Fixing_Overdraw_with_Canvas_API
-
Pekâlâ, işte tekrar
Android Studio'dayız,
-
DroidCardsView'un kaynağını inceleyeceğiz.
-
Bu bizim özel görünümümüz.
-
Hatırlayalım, oyun kartı destesini
geliştirdiğimiz yer, bu özel görünümdür.
-
Örneğin, her kart kendi
bit eşlemine sahip ve
-
onDraw metodunu
kullanarak bunları ekrana çiziyoruz.
-
Hatırlayın, Android, onDraw metoduyla,
bu görünümün oluşturulmasını
-
optimize edemeyecektir.
Bu nedenle, geliştiriciler olarak
-
bizim görevimiz, gereksiz abartılı
çizimlerden kaçınmak için
-
ekrana çizilirken her bir kartı
uygun biçimde kırpmaktır.
-
Şanslıyız ki, Tuval API, kartlarımızı
daha verimli çizmek için ihtiyacımız
-
olan doğru metotları sağlar.
-
Dokümantasyona bir bakalım.
-
Kodumuzu geliştirmek için,
canvas.clipRect metodunu kullanalım.
-
Dört kaydırmayı, parametre olarak alan
bu değişkeni kullanacağız.
-
Tamam, tekrar Android Studio'dayız.
-
Bu abartılı çizimi sadeleştirmek için,
basamaklı düzendeki kartları keselim.
-
Android Studio'daki bu havalı özelliği,
bir diff görünümü getirmek için
-
kullanacağım, böylece kodun önceki
ve sonraki durumunu görebileceksiniz.
-
Şimdi karşılaştırma görünümündeyiz,
özellikle kullanmakta olduğumuz
-
onDraw metoduna bakacağız.
-
Sol tarafta döngünün
eski hâlini görüyoruz,
-
ama gelin, sağ tarafta yapacağımız
ilerlemelere odaklanalım.
-
Kartlarımızın üzerinden geçerken,
ilerlememizin her bir adımını inceleyelim.
-
İlk olarak, kart pozisyonunu
hesaplayacağız.
-
Daha sonra, verili tuval durumunu
kaydedecek olan
-
canvas.save işlevini çağıracağız.
-
Diğer bir deyişle,
-
ekranınızın, clipRect API'yı uygulanmadan
önceki durumunu sürdürür.
-
Bu clipRect metodunu çağırdığımızda,
-
temel olarak bazı geometrik
sınırlamalar uygularız.
-
Bu parametreleri geçirdiğimizde,
sisteme, kartların sadece görmek
-
istediğimiz kısımlarını çizmesini
söylemiş oluruz.
-
Geri kalan kısım ise saklı kalır.
-
Yalnızca belirlediğimiz sınırların
içinde kalan kartların
-
kısımları çizilecektir.
-
Son olarak, canvas.restore
metodunu çağıracağız,
-
bu metot, tuvali kırpılmamış
hâline döndürecek.
-
Diğer bir deyişle,
-
clipRect metodunu çağırdığımızda
uyguladığımız sınırlamaları kaldıracak.
-
Sonra bu döngüyü, en üstteki hariç,
tüm kartlarda tekrar ediyoruz.
-
Özellikle en üstteki ve son kartı,
altındaki kardeşlerden
-
farklı biçimde işleme
tabi tutacağız.
-
Bunun için, kırpmaya gerek yok,
-
o yüzden, devam edip tamamını çizeceğiz.
-
Buradaki bildirim vasıtasıyla,
bunu görebilirsiniz.
-
Pekâlâ, geliştirdiğimiz
kodumuzu uygulayalım
-
ve abartılı çizimleri sadeleştirip
sadeleştiremediğimize bakalım.
-
Pekâlâ, harika.
-
Gördüğünüz gibi,
daha az abartılı çizim var.
-
Umarım, Tuval API'nın, özel görünümlerle
çalışırken, çizim yapmanın
-
verimli bir yolu olduğu
açık hâle gelmiştir.
-
Tuval API'yı daha fazla
keşfetmek isterseniz,
-
eğitmen notlarındaki tam
dokümantasyona başvurun.
-
Bunlar gibi görünümler, benzersiz
ve ilgi uyandıran bir kullanıcı deneyimi
-
yaratmamıza yardım eder, fakat
unutmayın ki, Android'in başarılı biçimde
-
böyle görünümler yaratmasını sağlamak
için sisteme ipuçları sağlamalıyız.
-
Her ne zaman bir özel görünüm
yaratırsanız, abartılı çizimleri
-
kontrol etmeyi ve dostumuz clipRect
metodunu çağırmayı unutmayın.
-
Pekâlâ, iyi iş çıkardık.
-
Şimdi, daha çok perf bilgisi için
sözü yine Colt'a bırakalım.