SORU
12 Temmuz 2010, PAZARTESİ


Nasıl kolayca başlık/metin birlikte geçti (zaman)ProgressDialog ilerleme göstergesi merkezi

progressDialog = ProgressDialog.show(this, null, null, true); çağırırken genellikle geliştiriciler sadece ilerleme göstergesi görüntü göstermek istiyor, ve genellikle pencere (en azından görünümü düzenli UI Tasarım açısından) merkezlenmiş olması beklenebilir. Ama görüntü çok daha uzağa, öyle görünüyor ki bazı doldurma/kenarında sağ tarafta ise hala hesaplanan (isteğe bağlı) metne göre doğru, ancak değiliz geçen herhangi bir metni parametre olarak. Sadece hayatın küçük bir geliştirici için daha kolay :) olur ilerleme varsayılan olarak merkezli olmanın göstergesi olması için özel bir iletişim oluşturmak için ihtiyacımız yok.

(Bir özelliği de bu gelişmiş görmek isterseniz http://code.google.com/p/android/issues/detail?id=9697; lütfen star talep) olarak bunu hazırladım.

Şimdi soru:

  1. Nasıl kolayca tamamen kendi özel uyarı iletişim benim sınıf oluşturmak zorunda kalmadan ilerleme merkezi resim alabilir miyim? Gözden kaçırmış olabileceğim herhangi bir parametre?

  2. Şeffaf arka plan ayarlamak için nasıl ayrıca?

Ayrıca bu konuyu merak ediyorum: http://stackoverflow.com/questions/2866141/how-to-put-custom-animation-into-a-progressdialog Aslında kendim henüz denemedim ama eğer olursa özel animasyonlar oluşturmak olamaz, eğer animasyonlu ilerleme göstergesi bir tür istiyorsanız, size her zaman ProgressDialog sınıfı genişletmek için ihtiyaç olduğu anlamına geliyor? Hiçbir şey düzenli olsa drawables (ProgressDialog.java) dışındaki bulmuyorum ama ProgressDialog sınıfı bakarak, orada AnimatedDrawable kullanıyorlar.

CEVAP
12 Temmuz 2010, PAZARTESİ


Biraz araştırma yaptım ve bunu başarmak için en iyi yolu bir özel yaptığını hissediyorum Dialog.

Burada yaptığım bir örnek. Bu soru 2 cevap verecektir ama soru sayısı 1 düzeltmek için nasıl bir fikir verecektir.

public class MyProgressDialog extends Dialog {

    public static MyProgressDialog show(Context context, CharSequence title,
            CharSequence message) {
        return show(context, title, message, false);
    }

    public static MyProgressDialog show(Context context, CharSequence title,
            CharSequence message, boolean indeterminate) {
        return show(context, title, message, indeterminate, false, null);
    }

    public static MyProgressDialog show(Context context, CharSequence title,
            CharSequence message, boolean indeterminate, boolean cancelable) {
        return show(context, title, message, indeterminate, cancelable, null);
    }

    public static MyProgressDialog show(Context context, CharSequence title,
            CharSequence message, boolean indeterminate,
            boolean cancelable, OnCancelListener cancelListener) {
        MyProgressDialog dialog = new MyProgressDialog(context);
        dialog.setTitle(title);
        dialog.setCancelable(cancelable);
        dialog.setOnCancelListener(cancelListener);
        /* The next line will add the ProgressBar to the dialog. */
        dialog.addContentView(new ProgressBar(context), new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        dialog.show();

        return dialog;
    }

    public MyProgressDialog(Context context) {
        super(context, R.style.NewDialog);
    }
}

Tüm statik yöntemler this bağlantı, hiçbir şey garip geliyor, ama sihirli kurucu oluşur. Parametre olarak bir stil geçiyorum olmadığını kontrol edin. Bu tarz şudur:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="NewDialog" parent="@android:Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:background">@android:color/transparent</item>
    </style>
</resources>

Bu sonuç, ProgressBar bir ekranın ortasında dönüyor. Dialog kutusu backgroundDim olmadan.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Blue Lightning TV

    Blue Lightni

    9 EKİM 2011
  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Matthew Morrill

    Matthew Morr

    15 EKİM 2011