SORU
8 ŞUBAT 2010, PAZARTESİ


Nasıl bir bakış mutlak koordinatları almak için

Görünümü sol üst köşesinde mutlak ekran piksel koordinatları almaya çalışıyorum. Ancak, tüm yöntemleri I getLeft() gibi bulabilir ve getRight() hepsi görünümün üst bağlantılıdır, böylece beni 0 vermiş gibi gibi çalışmıyor. Bunu yapmak için doğru yolu nedir?

Eğer yardımı olacaksa, bu bir 'geri resim sırası oyunu. konur Kullanıcı birden fazla parça seçmek için bir kutu çizmek mümkün olmak istiyorum. Benim konuyu da bunu yapmanın en kolay yolu olduğu için getRawX() getRawY() MotionEvent ve sonra karşılaştırmak bu değerlere karşı sol üst köşede düzeni holding parçaları. Parçaların boyutunu bilmek, sonra seçildi nasıl tespit edebilirim. MotionEvent getX() getY() kullanabilirim ama o seçildi belirlemek daha zor kılan bir göreli konumunu verir gibi farkındayım. (İmkansız değil, biliyorum, ama gereksiz yere karmaşık görünüyor).

Teşekkürler!

Edit: Bu holding kabın boyutu, bir soru olarak başına almak için denemek için kullandığım kod. TableLayout tüm puzzle parçaları tutan tablo.

TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);
Log.d(LOG_TAG, "Values "   tableLayout.getTop()   tableLayout.getLeft());

Edit 2: Burada denedim kodu, önerilen cevaplar daha fazla takip ediyorum.

public int[] tableLayoutCorners = new int[2];
(...)

TableLayout tableLayout = (TableLayout) findViewById(R.id.tableLayout);
tableLayout.requestLayout();
Rect corners = new Rect();
tableLayout.getLocalVisibleRect(corners);
Log.d(LOG_TAG, "Top left "   corners.top   ", "   corners.left   ", "   corners.right
              ", "   corners.bottom);

cells[4].getLocationOnScreen(tableLayoutCorners);
Log.d(LOG_TAG, "Values "   tableLayoutCorners[0]   ", "   tableLayoutCorners[1]);

Bu kod tüm işlemi bittikten sonra eklendi. Görüntü İmageViews bir dizi ayrılmıştır edilmiştir (hücreleri[] dizi) TableLayout bir dairedir. Hücreleri[0] ** 15, ve ortada bir yerde gibi hücreleri[4] aldım sol üst ve kesinlikle (0,0) koordinatları olmamalıdır.

Kodu yukarıda gösterilen hala beni gerçekten farklı puzzle parçalarını düzgün şekilde görüntülenir, çünkü anlam veremediğim bir günlükleri, tüm 0s verir. (TableLayoutCorners ve varsayılan görünürlük için kamu int, her ikisi de aynı sonucu vermeye çalıştım.)

Eğer bu önemli mi bilmiyorum, ama ImageViews aslında bir boyut verilmez. ImageViews boyutunda görüntülemek için bir görüntü verince Görünüm tarafından başlatma sırasında otomatik olarak belirlenir. Bu değerleri günlük kod bir görüntü verilmiş olsa 0, olmak, katkıda bulunmak ve kendilerini otomatik olarak yeniden boyutlandırılabilir olabilir mi? Potansiyel olarak karşı, kodu yukarıda gösterildiği gibi tableLayout.requestLayout() ekledim ama bir yararı olmadı.

... Tekrar Teşekkürler yardımcı olan herkese kafam allak bullak oldu.

CEVAP
9 ŞUBAT 2010, Salı


View.getLocationOnScreen() ve/veya getLocationInWindow() kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Felice Musique

    Felice Musiq

    22 NİSAN 2014
  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011