2013-01-16 22 views
5

İki bitişik grafik düğmesi vardır. Koordinatların hesaplama yöntemini TouchEvent'a kullanırsam, çok sayıda koordinat oluşturmam gerekir. Belki başka bir yöntem var mı?Düğme bir kontur çokgeniyle nasıl ayarlanır? Android

ImageButton

+0

Düğmeler tam olarak böyle görünüyor mu? – Luksprog

+0

Hayır, tasarım bitmedi, şimdi bir kavşakta duruyorum, trapezoidal düğmeler yapmak istiyorum, eğer problemime bir çözüm bulursam – Roman

cevap

7
Muhtemelen

değil en iyi çözüm ancak iki düğmeleri üst üste olabilir (siyah veya beyaz) ve şeffaf Button 'ın resmin geri kalanını yapmak görüntünün bir kısmını temsil eden her (görüntüler olacak her iki düğme için de aynı boyutlar). Ayrıca, onTouchEvent yönteminin dokunma olaylarının şeffaf bir nokta veya "görüntü" noktası olduğu noktaya bağlı olarak dokunma olaylarını nasıl işlediğini geçersiz kılmak için Button sınıfını da genişletmeniz gerekir. Aşağıda benzeyen iki parçadan oluşan bir Button (benim tasarım becerilerini görmezden) elde küçük bir örnek proje yaptık:

enter image description here

Sen project here bulabilirsiniz, oldukça açıklayıcı kendini bu. Size yardımcı olup olmadığına bakın.

+1

Çözümünüz için teşekkürler. Bana yardımcı oldu. Ancak, örneğinizle ilgili bir sorun buldum. Çizilebilir "wrap_content" içinde değilse (örneğin, fill_parent), projeniz çökecektir. . = Bitmap.createScaledBitmap ( \t \t ((BitmapDrawable) bkg.getCurrent()) getBitmap(), \t \t GetWidth(), \t \t GetHeight ( Bitmap b: böyle bitmap oluşturarak bu sabit), \t \t); –

+1

@Sebastien Haklısınız, kodum görünümün boyutunun değişmesi (veya Bitmap'in kendisinden daha büyük olması) dikkate alınmadı. Örneği düzelttim ve "onSizeChanged" geri aramada "Bitmap" i ölçeklendiriyorum, böylece her zaman doğru boyuta sahip. – Luksprog

+0

Çözümünüz benimkinden daha iyidir (onSizeChanged içinde yapmak için). Tekrar teşekkürler :) Bununla birlikte, bitmap'i oluşturmadan önce bunu tekrar geliştirdim, bu kodu ekledim: // Bitmap bellekte çok yer kapar, mümkün olan en kısa sürede boş bellek \t if (mBitmap! = Null) { \t mBitmap.recycle(); \t} –

İlgili konular