2011-02-05 18 views
9

Android Canvas sınıfı, zengin bir dizi çizim ilkelini destekler - daireler, çizgiler, vb. Bazı istatistiksel verileri grafik olarak göstermek için bunları kullanan bir uygulama var. Tuval sınıfı çizim ilkelleri için bağımsızlık değeri

http://developer.android.com/reference/android/graphics/Canvas.html#drawLine%28float,%20float,%20float,%20float,%20android.graphics.Paint%29 üzerine açıklama okuduktan sonra. . . Koordinatların hangi birimlerde olduğu veya cihaz/çözünürlükten bağımsız olarak nasıl yapılacağı açık değildi.

bu ne birimlerdir ve çizgileri ve çevreleri ve farklı ekran boyutları ve çözünürlükleri sürü üzerinde çalışmak dikdörtgenler çizmek için "en iyi uygulama" nedir? Şimdiden teşekkürler.

cevap

4

Android belgelerinde "Konum ve boyut birimi pikseldir" yazıyor. Bir süredir denedikten sonra, versiyon 2.0'dan önce ünitenin piksel olduğunu öğrendim. Fakat 2.0'dan itibaren ünite büyük olasılıkla dipte (cihazdan bağımsız piksel). Aşağıdaki kod için

:

Paint paint = new Paint(); 
paint.setColor(Color.RED); 
paint.setStyle(Paint.Style.STROKE); 
paint.setStrokeWidth(0); 
canvas.drawRect(new Rect(1, 1, 319, 319), paint); 

I robot 2.0+ ile 320x480, 480x800 ve 240x320 öykünücülerinde ekranın genişliğine uyan aynı boyutta kare elde. büyük bir ekranda 1 piksellik dikey çizgiler bazen 2 piksellik geniş şunlardır:

Bu keşif

beni sorunu çözmek için izin verdi. Ekran boyutundan bağımsız olarak 1 piksel çizgileri çizmek için strok genişliğini 0 olarak ayarlayın.

Düzenleme

Android ile daha fazla deneyim aldıktan sonra, benim sonuçlara düzeltmek gerekir. Aslında AndroidManifest.xml'nin "support-screens" etiketinde "android: anyDensity" özelliğine sahip bir özellik var. Bu özellik varsayılan olarak doğrudur. Doğru olduğunda, ölçü birimi dp'dir, aksi halde bir pikseldir.