1024 * 768 1 density bir ekran için yapılan uygulama tasarımı, 640 x 400 0,75 density ekrana oturmuyor. Çünkü Android layout dosyasındaki herşeyi density değeriyle çarpıyor. Runtime da oluşturulan görselleri density değerine bölerek bunun önüne geçiyorum fakat xml dosyasında oluşturulanları tek tek yeniden boyutlandırmam gerekiyor bunu yapabilmem için. Buda açılışta performans yönünden oldukça kötü etkiliyor. anydensity özelliğini false yaptığımda ise density değerini 1 alıyor ve anlamsız bir şekilde 1280 ve 800 sayısını density değeriyle çarpıyor ve ekran yükselik ve genişliğini bu rakamlara set ediyor. 2 density olan bir ekranda doğal olarak tasarım tasarım iki kat büyüyor.
anydensity = false yapınca density değerini hep 1 alıyor. Ama kendi içinde işlem yapıyor. Mesela density 2 ise cihazın 1024px genişliğinde bir resmi 2048 px yapıyor. Şimdi ben bu resmin genişliğini alıp density değerine böldüğümde ekrana tam oturtuyorum fakat anydensity false olduğu için runtime da bana density değerini 1 veriyor.
Bu problemin çözümü nedir arkadaşlar?
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
evet arkadaşlar Android sanırım bu çarpma bölme işlemlerini ben tüm boyutları ayarladıktan sonra yapıyor. Yani ben onun 0,75 ile çarptığı değerleri 0,75 e ne kadar bölsemde kar etmiyor.
Bunu ancak her çözünürlük için ayrı ayrı layout dosyası oluşturduktan sonra birde her çözünürlük için ayrı ayrı density lerde layout dosyaları hazırlayarak çözebileceğimi düşünüyorum.
Toplamda 8 farklı çözünürlük için hazırlayacağım layout dosyalarını her çözünürlük içinde ayrı ayrı 4 density değeri için tekrar hesap yapıp dosya hazırlayacağım. toplamda 32 layout dosyası olacak uygulamanın. Herkes böyle mi yapıyor anlamadım ki? Bunun bir yolu vardır diye düşünüyorum.
hocam ayrı ayrı layoutlar hazırladıktan sonra ne yapmam gerekiyor androidin layoutlarımı tanıması için
ayrı ayrı layout lar hazırlama işin içinden çıkamazsın onlarca çözünürlük varyasyonu var. Çözünürlüğe göre her item' i yeniden boyutla yalnız burada density değerini hesaba katmaman gereken durumlar olacak.
Mesela diyelim ilk çalıştığın tasarım 1280 * 800 için. böyle bir durumda. Uygulamanın çalışacağı ekran genişliğini al
DisplayMetrics metrics = new DisplayMetrics() windowWidth = metrics.widthPixels
Sonra nesnenin genişliği ile yeni değerini hesapla yani olması gerekeni.
deger = (windowWidth * genislik) / 1280
bu verdiğim örnek sadece genişlik için. Yükseliğide aynı şekilde hesaplayıp yeniden boyutlayabilirsin.
yani
deger = (windowHeight * yukseklik) / 800
Ben böyle bir çözüm ürettim tüm ekran çözünürlüklerinde aynı görüntüyü elde edebilmek için. Bundan daha kısa bir yol gelmedi aklıma. Bir method yazıp her nesne için parametre gönderip hızlı bir şekilde hepsini halledebilirsin. Bu arada çıkan sonucu density değerine bölmen gerekir.
1024 * 768 1 density bir ekran için yapılan uygulama tasarımı, 640 x 400 0,75 density ekrana oturmuyor. Çünkü Android layout dosyasındaki herşeyi density değeriyle çarpıyor. Runtime da oluşturulan görselleri density değerine bölerek bunun önüne geçiyorum fakat xml dosyasında oluşturulanları tek tek yeniden boyutlandırmam gerekiyor bunu yapabilmem için. Buda açılışta performans yönünden oldukça kötü etkiliyor. anydensity özelliğini false yaptığımda ise density değerini 1 alıyor ve anlamsız bir şekilde 1280 ve 800 sayısını density değeriyle çarpıyor ve ekran yükselik ve genişliğini bu rakamlara set ediyor. 2 density olan bir ekranda doğal olarak tasarım tasarım iki kat büyüyor.
anydensity = false yapınca density değerini hep 1 alıyor. Ama kendi içinde işlem yapıyor. Mesela density 2 ise cihazın 1024px genişliğinde bir resmi 2048 px yapıyor. Şimdi ben bu resmin genişliğini alıp density değerine böldüğümde ekrana tam oturtuyorum fakat anydensity false olduğu için runtime da bana density değerini 1 veriyor.
Bu problemin çözümü nedir arkadaşlar?
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi samplus -- 18 Kasım 2012; 0:07:12 >