2013-07-12 16 views
6

Tuval koordinat sisteminin biriminin ekranınkinden farklı olduğunu buldum. Benim Örneğin ilk durumda Tuval koordinat sisteminin birimi nedir? - android

aşağıdaki gibi:

belirli bir nokta için, onun ekrandaki ImageView.getX() ve ImageView.getY() elde edilen koordinat (336, 578) olup.

Ardından deneme ve hata ile, Tuval üzerinde bir nokta çiziyorum, böylece bu nokta, ImageView ile aynı konumda EXACTLY. Bunu başarmak için canvas.drawCircle(330, 440, radius, paint); numaralı telefonu aradım.

Neden mü 2 koordinatlar, (336, 578) ve (330, 440), farklı: İşte

soruyu geliyor? Ekran ve tuval farklı birimleri kullanarak çünkü

mi?

Pixel, dp ve bunlarla ilgili bir sorun mu var?

cevap

1

Sen ve pencere View.getLocationInWindow her zaman aynı koordinatlar sistemini kullandığınızdan emin olacağım bu şekilde kullanarak koordinatları dönüştürme deneyebilirsin. ImageView.getX arasında

Koordinat bir Y ana göredir. Tuval koordinatları görüme göre değişir. Bu farklılıklar

Edit neden olabilir: I (getX ve getY kullanarak) bakış koordinatlarını almak tek bir yerde varsayalım. Bunları pencere koordinatlarına dönüştürün. Bunları viewXY[] numaralı telefonu arayın.

ayrıca, tuval çizmek pencere koordinatları için üst ve sol koordinatları dönüştürmek için, bunları kullanmak gerekir

. Bunlara canvasXY[] diyoruz.

Şimdi de çizmek X pozisyon viewXY[0] - canvasXY[0] olacaktır ve Y pozisyon viewXY[1] - canvasXY[1] olurdu.

+0

View.getLocationInWindow'dan alınan pencere koordinatları ne anlama geliyor? –

+0

Çok anlamlı görünüyor. 2 koordinatı nasıl birleştirebilirim? Teşekkürler! –

+0

Bunu yapmayla ilgili daha fazla açıklama ekledim. Umarım – nickmartens1980

1

Bir görünümün konum koordinatları her zaman üst öğeye göreli olarak geçerlidir. Bu manzaraya göre, ebeveyn ile ilgili olarak bu görüşün yerleştirildiği yerdir. Başka bir şey var, ekran Koordinatını izleyin. Bu, pencerenin üstüne/soluna (gerçek fiziksel ekranı düşünün) göre bu nesnenin yerleştirildiği yeri belirtir. Bu, View.getLocationOnScreen aracılığıyla elde edilebilir. Eğer iki konumu karşılaştırmak istiyorsanız hem bu yerlerin ana görünümü aynıdır ya da mutlak ekran koordinatlarını kullanıyorsanız

, sadece eşdeğer olacaktır. Aksi takdirde, yalnızca "farklı" görünen sonuçlar elde edersiniz.

Eğer iki birleştirmek ya bir ortak ebeveyn götürün veya mutlak koordinatlarını kullanmak istiyorsanız.

+0

'a yardımcı olur. Bu yüzden ekran mutlak konumu ile tuval üzerine nokta çizebilirim? Bunu nasıl yapabilirim?Canvas.drawCircle (x, y, radius, paint) 'deki x ve y yalnızca 2 float sayısından oluşur. Ekran mutlak konumunu kullanmak istediğim işlevi nasıl anlatabilirim? –

İlgili konular