2015-11-27 6 views
5

koruyarak() view.getDrawingCache nasıl yapılır, o Bitmap maalesef artık şeffaf olduğunu. Siyah bir arka plan arka planda ayarlanır.Ben şeffaf arka plan ile bir görünümü var ve <code>bitmap = view.getDrawingCache();</code> yaparsanız şeffaflığı

Hatta başarılı olamadı

view.setDrawingCacheBackgroundColor(Color.TRANSPARENT);

çalıştılar.

Aslında bu yöntem, herhangi bir alfa desteği olmadan arka plan rengini ayarlamak için izin verir ben Color.RED kullanırsanız ... alfa bölümü hakkında umursamazsak 0x00000000 aslında siyah olduğunu Color.TRANSPARENT, arka plan gerçekten çok olduğunu kırmızı.

Bunu yapmak için bir fikrin var mı? Bu mevcut Android API'sinin bir kısıtlaması mı? Bunun yerine draw() kullanabilir miyim? fakat bu view.getDrawingCache()'un (önbellek yok) varsayımından daha az performans gösteriyor?

Teşekkür

+1

Bir çözüm buldunuz mu? – Antzi

+0

Tam olarak aynı problemim var – takluiper

cevap

0

Kurası önbelleğe biraz öncesi HW hızlandırılmış Android'in bir kalıntı, yani bazı şeyler biraz kafa karıştırıcı/değil de belgelenmiş olabilir.

Şeffaflık, önbelleğin 16 bit renk alanına düşmesine neden olabileceğinden, View#setDrawingCacheBackgroundColor(int)'u terk ettiğiniz sürece çok iyi çalışmalıdır (bkz. View#mDrawingCacheBackgroundColor).

view.setDrawingCacheEnabled(true); 
// wait for first layout 
... 
Bitmap b = view.getDrawingCache(); 

size şeffaf arka plan ile ARGB_8888 bit eşlem vermelidir Bu kodu. (Ayrıca bu ayarları tarafından Android Studio ayıklayıcısında değişkeni olsun çağrısı ve 'View Bitmap' sonra bir kesme noktası.

0

XML dosyasında şeffaf düzen arka plan rengini ayarladıktan sonra bu kodu deneyin olabilir

  layout.setDrawingCacheEnabled(true); 
      Bitmap bmp = layout.getDrawingCache(); 
      File mFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "smiley1.png"); 
      FileOutputStream outStream; 
      outStream = new FileOutputStream(mFile); 
      bmp.compress(Bitmap.CompressFormat.PNG, 100, outStream); 
İlgili konular