2010-05-07 19 views
20

aşağıdaki çekilebilir kullanıyorum:Degrade çekilebilir mi?

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" 
    > 

    <gradient 
     android:startColor="@color/content_background_gradient_start" 
     android:endColor="@color/content_background_gradient_end" 
     android:angle="270" 
     /> 

</shape> 

Sorun hdpi cihazlarda ciddi bantlama elde ediyoruz degrade çok altına ekranın üstünden gider beri (Nexus One ve Droid gibi) .

http://idunnolol.com/android/drawables.html#shape_gradient'a göre, bir degrade için "dither" özelliği yoktur. Gradyanı düzeltmek için yapabileceğim bir şey var mı?

Not: şekle dither = "true" eklenmesi işe yaramıyor gibi görünüyor.

cevap

11

Başvuru yaptığınız belgeleri yazdım. Kodu başka bir bakışa aldım ve maalesef kodda GradientDrawable.setDither()'u açıkça arama dışında GradientDrawable üzerinde dithering'i etkinleştirmenin bir yolu yok.

(kodları görünüyor yolu, teknik bir <selector> ait sadece çocuğu olarak Gradient içerir ve tüm seçicisini titreme mümkün kılabilir;. Ancak, kesinlikle kesmek)

ben Cihazın renk paletinin çok az olduğu durumlarda, dithering'in (en azından resmi Android belgelerinde belirtildiği gibi) bantlama sorunlarının çözümünde olduğu gibi, dithering özelliğini etkin bir şekilde çözeceğine ikna olmadım. Bu, gradyanın boyutu nedeniyle bir bantlaşma problemi gibi görünüyor.

2

Geçen yıl çok benzer bir sorunla karşı karşıya kaldım ve Android geliştiricileri listesinde faydalı bir sonuca varmadım.

Ancak bir süre önce ben elle GIMP ve kullanarak yeni bir imaj oluşturmak, bu noktada yoğunluğunu belirlemek olduğunu <gradient> çalışıyor ve çeşitli dither özelliklere sahip Drawable s her türlü manuel Titrek PNGs — oluşturduktan sonra — keşfetti Görüntü oluşturulurken (yani 120, veya 240 vb. Girerek), hdpi cihazlarda bile harika görünür. Ve bu çok fazla renkle, gri tonlamalı bir degrade olmasına rağmen.

Kaydedildiğinde PNG, nispeten büyük (en az 240dpi) olmak üzere biter, ancak harika görünüyor.

7

Herkese selam, bende aynı sorun var, bir çözüm var ama çok iyi değil.

getWindow().setFormat(PixelFormat.RGBA_8888); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); 

Bu benim için çalışıyor, ancak sorun tüm pencerelerin dithered olmasıdır. Sadece eğimi azaltmak için bir yol bulmaya çalışıyordum ama hiçbir şey bulamadım. android: xml'de dither = "true" çalışıyor ve GradientDrawable.setDither (true) da çalışmıyor. Bu yüzden herhangi bir fikir sadece nasıl bir degrade yapabilirim?

+0

Seçilen cevap bana yardımcı olmadı, senin yaptı! Android 2.2 ile bir Galaxy S var. –