2011-12-26 16 views
7

2.3.3 left, ICS on right (emulator). Notice the gradient fade effect difference inside the red box.Gradyan uyumluluk sorunu - ICS (4.0.3) emülatör Sağdan sola Android

Gingerbread (2.3.3) emülatör tüm önceki sürümlere göre daha az renge ICS varsayılan. Kırmızı kutu içindeki degrade solma efekt farkına dikkat edin (tam boyutlu görüntüyü görmek için ayrı pencerede açın).

Mainview arka planı:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/app_bg" 
android:orientation="vertical" > 

... 

</LinearLayout> 

app_bg.xml bu soruna neden olduğunu ne

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<gradient android:startColor="#000" android:centerColor="#333" 
    android:endColor="#000" android:angle="270" /> 
</shape> 

? Bunu nasıl düzeltebilirim, böylece ICS gradyanı 2.3.3 sürümü kadar pürüzsüz mü? Sorun sadece emülatörde mi gerçekleşiyor?

+0

Ana bilgisayar ekranınız (yani, öykünücünün gösterildiği ekran) kesinlikle 32bpp mı? –

+0

Ne demek istiyorsun? Her iki emülatör de ekran görüntüsünün alındığı saatte aynı monitörde çalışıyor. –

+0

Benim hatam, 2.3 ekranının da taklit edildiğini fark etmedim. –

cevap

0

Yalnızca ICS 4.0.3 cihazında doğrulanmış: Bu, SADECE numaralı sorundur.

+1

hayır değil. Ben galaxy note aynı sorunu var ... – syloc

1

Sorun şu ki, android (sağda) daha az renk kullanarak degradeyi çiziyor. Renk derinliğindeki düşüşü gizlemeye yardımcı olmak için dithering özelliğini etkinleştirmek istediğinizi düşünüyorum. Belki nasıl çalıştığını tamamen emin değilim bu cevabı link

görüyorum ama bazen cihaz 24bit renk kapasitesine sahip olsa bile, RGB_565 moduna varsayılan olarak android inanıyoruz.

+0

Evet, degradeyi doğru çizmek için gerekenden daha az sayıda renk için varsayılan değer olarak görünüyor. Ama neden ICS'de ve nasıl değiştirileceği konusunda hiçbir fikrim yok ve ben de bir çözüm bulamadım. Cevabını bilen birinin burada yazdığını umuyoruz ... window.setFormat (PixelFormat.RGBA_8888); 'onAttachedToWindow()' da arka planın çizildiği etkinlikte sorun giderilmiyor. –

0

Yorumunuzu PixelFormat.RGBA_8888 kullanmanın yardımcı olmadığını gördüm.
Ayrıca, dither bayrağı eklemeye de çalışabilirsiniz: window.addFlags(WindowManager.LayoutParams.FLAG_DITHER);.
Burada titreme ve renkler hakkında benim önceki ilgili cevabı görebilirsiniz:
Awful background image quality in Android

+1

'getWindow(). SetFormat (PixelFormat.RGBA_8888);' ve 'getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_DITHER);' 'onCreate' yöntemine ekledim ve hala sorunu çözmüyor (yok ' super.onCreate (savedInstanceState); 'öncesi veya sonrası ise önemlidir. –

+1

Çok garip, düşünebildiğim tek şey, bu durumda sorun motorun çekilebilirliği çok iyi optimize edip etmemesidir, eğer gradyan rengini # 000 yerine # FF000000 olarak ayarlayabilirseniz muhtemelen işe yarayabilir, ama ICS'de aksaklık. – Jave

+0

6 karakter renk kodları ve 8 karakter renk kodları (FF olarak alfa) çalıştı ama yine de, degrade 90'ın –

1

ICS otomatik donanım hızlandırma uygulamada etkinse degrade etkisi ekler. Tüm uygulamalar için donanım hızlandırmayı zorlamak da mümkündür, bazı uygulamaların siyah yerine degrade arka plana sahip olacağını fark edeceksiniz.

İlgili konular