FrameLayout üzerinde ProgressBar

Garip bir durumum var. OpenGL modunda video akışı yapmak için NexPlayer kullanıyorum. Akış videosu için render alanının üstünde (bir framelayout), video oynatıcısı her arabelleğe alındığında belirsiz modda bir ProgressBar gösteriyorum - youtube uygulamasının yaptığıyla karşılaştırılabilir.

Bu, oynatıcının arabelleğe almayı durdurduğu noktaya kadar iyi çalışır ve ekrandan ilerleme çubuğunu kaldırmaya çalışırım. Progressbar animasyonu durdurur, ancak videoda bir filigranmış gibi ekranda kalır. Kaldırmaya çalıştığım yol, ilerleme çubuğunun görünürlüğünü değiştirerek; Hem View.INVISIBLE hem de View.GONE denedim, ancak çalışır. Ayrıca, ilerleme çubuğunu başka bir düzende sarmalamaya ve kapsayıcının görünürlüğünü değiştirmeye çalıştım, ancak boşuna.

Cihazı döndürdüğümde ilerleme çubuğunun kaybolduğunu fark ettim.

Aşağıda oyuncu etkinliği için xml düzeni yer almaktadır. Buradaki yüzey görünümü sadece cihazın OpenGL 2.0'ı desteklememesi durumunda kullanılır.

Bu ProgressBar'dan nasıl kurtulacağına dair bir fikri olan var mı?

Şimdiden teşekkürler!

<?xml version="1.0" encoding="utf-8"?>










    

        

        
    

    




    




EDIT: görünümün görünürlüğünü değiştiren kod:

@Override
public void onBuffering(int progress_in_percent) {
    Log.d(TAG, "Buffering " + progress_in_percent + " %");
}

@Override
public void onBufferingBegin() {
    Log.d(TAG, "Buffering begin");
     loadingContainer.setVisibility(View.VISIBLE);
}

@Override
public void onBufferingEnd() {
    Log.d(TAG, "Buffering end");
    loadingContainer.setVisibility(View.GONE);
}

Bu yöntemler NexPlayer çerçevesinden çağrılır. Günlükleri çıktı aldığımdan eminim.

1
Kodu ekledim. Baktığın için teşekkürler!
katma yazar Mopper, kaynak
Göstermek için kullandığınız kodu kaydedip ilerleme çubuğunu gizlemeye çalışabilir misiniz?
katma yazar Craigy, kaynak

1 cevap

Tamam, anladım. NexPlayer çerçevesinden aldığım geri çağrı UI iş parçacığında değildi. Garip bir şekilde, bu günlükte herhangi bir yığınlanma neden olmadı, bu yüzden hata ayıklayıcımı ekledim ve herhangi bir istisnada askıya alan bir kesme noktası ekleyene kadar bunu fark etmedim.

Yukarıdaki kodla aynı şeyi yapan ve bunları işleyicime gönderen runnables oluşturarak bunu düzeltdim.

(Yine de ProgressBar'ın neden ilk sırada ortaya çıktığını, çünkü yanlış iplikte görülebilmem için hala beni yendi: /)

2
katma