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

  • hockeywebcasts

    hockeywebcas

    31 EKİM 2012
  • Liam Underwood

    Liam Underwo

    19 Mayıs 2009
  • WOSU Public Media

    WOSU Public

    23 AĞUSTOS 2007