2013-08-03 26 views
8

Ekranın ortasından tuvali döndürmeye çalışıyorum, alt sağda (0,0) koordinatlarını elde etmek için.Android: ekranın ortasındaki tuvali döndürün

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 
canvas.rotate(180, width/2, height/2); 

Bu doğru döndürmek etmez ve her şey API düzeyinde 17 ile Ama API düzeyinde 8 (0,0) ile AVD üzerinde AVD de mükemmeldir koordinat:

Bu

ben böyle yaparız yanlış yerde görünür. Dönme önce resim çok bu cihazda bütün ekranı uydurma, ama şimdi şuna benzer:

enter image description here

ne sorunu neden oluyor?

* EDIT!

sorun kendi orta nokta etrafında tuval dönen giderilir:

canvas.rotate(180,canvas.getWidth()/2,canvas.getHeight()/2); 

Ama yine de, niçin eski olmayan API'leri ile önceki sürümü çalışır?

cevap

0

Canvas ve Display için aynı boyuta sahip olmak her zaman gerekli değildir. Display.getWidth() kullanımdan kaldırılmıştır ve bunun yerine Display.getSize() kullanılması önerilir. documentation Gönderen:

piksel olarak ekranın boyutunu alır. Bir cihaz tipik (örneğin, bir durum çubuğu gibi) ekran dekorasyon olacaktır çünkü bu değer, işlem düzenleri için kullanılmamalıdır bu

Not temin edilebilen uygulama alanı azaltmak ekranın kenarları boyunca boyutu burada döndü. Layouts, pencere boyutunu kullanmalıdır. . tuval doğru değer vermek çünkü

Yani, canvas matris dönüşümü söz konusu olduğunda, her zaman, daha doğrusu Display veya Window daha referans olarak canvas kullanın. Böylece tuvali merkezin etrafında döndürmek için, canvas'un merkezine ihtiyacınız vardır.

Tuvalın ortası, (canvas.getWidth()/2 , canvas.getHeight()/2)

İlgili konular