Tüm ekranımı dolduran özel bir görünüm var. (Bir piyano klavyesi) Bir kullanıcı anahtara dokunduğunda, çağrılacak invalidate()
neden olur ve tüm klavye dokunarak yeni durumu gösterecek şekilde yeniden çizilir.Android: Kısmen yeniden çizilecek özel görünüm nasıl alınır?
Şu anda görünüm çok basit, ancak biraz daha güzel grafikler eklemeyi planlıyorum. Klavyenin tamamı dinamik olarak oluşturulduğundan, bu, tüm klavyenin daha pahalı bir şekilde yeniden çizilmesini sağlar.
Yani, kısmi yeniden çizime bakalım. Şimdi doğru kirli bölge ile invalidate(Rect dirty)
diyoruz. Gerçekten kısmi bir yeniden çizim yapmak istiyorsam, yalnızca kirli bölgedeki anahtarları çizmek için onDraw(Canvas canvas)
yöntemimi ayarladım. Bu, tuşların çekilmesiyle sonuçlanır, ancak klavyenin geri kalanı tamamen siyahtır/hiç çizilmez.
invalidate(Rect dirty)
numaralı telefonun şu anki canvas
"önbelleğini" ve yalnızca kirli bölgedeki çizimi "izin veriyor" olacağını beklemede yanlış mıyım?
İstediğim şeyi elde edebilmem için herhangi bir yolu var mı? (Bir yolu "önbellek" tuval ve sadece kirli bölgeyi yeniden çizmek "
Hmm, bu solutnioyu sevmiyorum çünkü anahtarlarının kısmen çizilmesinin sebebi, ilk olarak, hiscanvasını tam olarak çizmesi gerektiğidir. Soru şu ki, tuvali ilk etapta doğru çizemedi. –
Şimdi şunu bilmem gerekir ki, 'invalidate' bir kirli 'rect' ile çağırdığınızda, normal çizim kodunuzu kullanabilir ve yalnızca aslında 'rect'de kirli çizim işlemlerini gerçekleştirmelidir. 'Canvas'' rect' dışında kalan işlemleri atar. Yine de bu, kendi kodunuzun birçoğunu oluşturduğunu ve HW hızlandırmasıyla yaptığım testlerde, görünümü tamamen oluşturduğundan daha yavaş olduğunu gösteriyor. – Peterdk
Tuval için bitmapler çizmek için boya parametresinin boş olabileceğini unutmayın, örn. canvas.drawBitmap (bitmap, 0, 0, boş) '. – greg7gkb