SORU
10 Mayıs 2010, PAZARTESİ


Dönüştürme bir görünüm Android görüntülemeden bit Eşlem?

Ne yapmam gerektiğini anlatmaya çalışacağım.

Ben 3 ayrı ekranlar ki A,B,C Var başka bir ekran denir ki Ekranı tüm 3 ekranlar bitmap olmalı görüntülenen Galeri görünümü ve kullanıcı-ebilmek seçmek hangi görünüm mı gitmek istiyor.

3 ekranlarından bit almak ve Galeride görüntü Ekranı aktivitede kodu girerek görünüm için tek mümkün olmuştur. Şimdi, bu kod çok karmaşık olan ve bunu kolaylaştırmak istiyorum.

, Ekrandan başka bir Aktivite arayıp ekran ve ekran bit Eşlem değil miyim yani. Örneğin, ben sadece Ana ekran ve arama Faaliyeti A,B,C ve Faaliyetlerin hiçbiri A,B,C görüntülenir çağırır söylüyorlar. Sadece getDrawingCache bu ekran bit Eşlem verir(). Ve sonra Ana Galeri görünümünde bu bitmap görüntüleme edebiliriz.

Çok açık bir şekilde sorunu açıkladım umarım.

Bana eğer bu gerçekten mümkün olup olmadığını bildirin lütfen.

CEVAP
14 HAZİRAN 2010, PAZARTESİ


bunu yapmak için bir yol var. bir bit Eşlem oluşturmak için Tuval ve çağrı bir görünümü var.draw(tuval);

işte kod:

public static Bitmap loadBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
    Canvas c = new Canvas(b);
    v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
    v.draw(c);
    return b;
}

eğer görünümü önce görüntülenen olmasaydı ama boyutu sıfır olacak. Olası böyle ölçmek için:

if (v.getMeasuredHeight() <= 0) {
    v.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
    v.draw(c);
    return b;
}

EDİT: this post göremakeMeasureSpec() değer WRAP_CONTENT geçen hiçbir faydası yok(işe yarıyor bazı sınıfları görmek için olsa da), ve önerilen yöntemdir

// Either this
int specWidth = MeasureSpec.makeMeasureSpec(parentWidth, MeasureSpec.AT_MOST);
// Or this
int specWidth = MeasureSpec.makeMeasureSpec(0 /* any */, MeasureSpec.UNSPECIFIED);
view.measure(specWidth, specWidth);
int questionWidth = view.getMeasuredWidth();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • olinerd

    olinerd

    23 AĞUSTOS 2007
  • Warner Bros. UK

    Warner Bros.

    6 HAZİRAN 2008