2016-04-08 19 views
1

View sınıfımın onDraw(Canvas canvas) yönteminde çok fazla işlem gerçekleştiren bir Android uygulaması oluşturuyorum. Uygulama, portre modunu zorlar.Android kanvas genişliği ve yükseklik volatilitesi

Benim sorum şu ki, tuvalin yükseklik ve genişliğinin boya yöntemine yapılan çağrılar arasında değişmeyeceğini varsaymak ne kadar güvenli? Sormamın nedeni, ondraw yönteminde kullandığım birkaç nesneyi oluşturmak için bu değerleri kullanıyorum. Yüksekliğin ve genişliğin değişmeyeceğini varsayarsam, onDraw yönteminin ilk çağrıldığında oluşturulan 30 veya daha fazla Nesneyi önbelleğe alabilirim.

Çok fazla Swing programlama yaptım ve bu kesinlikle Swing'de yapamayacağınız bir şeydi, ancak bana göre birisinin telefonunun yüksekliğinin ve genişliğinin değişmesi olası değil.

Bu doğru bir varsayım mıdır? Ben denedim ve mükemmel çalışıyor, ancak ben takdir etmedim bir gotcha olabilir endişe duyuyorum.

Yardımlarınız için teşekkürler!

cevap

1

Her şey, View ürününüzün başına gelebilecek şeylere bağlıdır. Temel olarak çevirir: layout'a ve View ile yapmayı planladığınız şeylere bağlıdır.

canvas ürününüzün boyutunun, View boyutunun değişmediğinden emin olmadan devam edemeyeceğini kabul edebilirsiniz. Hiçbir şey View yeniden boyutlandırmak için zorlayabilirse, canvas' boyutunuz aynı kalır.

bu sorunu aşmak için en kolay yöntem View ait onSizeChanged yöntemi (veya onLayout için) (her durumda onDraw yöntemi içinde oturmak gerekir) tüm nesne ayırmaları taşımaktır. Bu şekilde, View's boyutunuz her değiştiğinde (bir şeyden dolayı), nesneleriniz drawing işleminizle doğru şekilde çalışmak için yeniden başlatılabilir veya düzeltilebilir.

+0

'onSizeChanged' yöntemi kesinlikle gitmek için en güvenli yol gibi geliyor - teşekkürler! – StuPointerException

İlgili konular