Autore Topic: Gestione VideoView  (Letto 962 volte)

Offline farolfo

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy 7 P1000
  • Sistema operativo:
    Windows 7
Gestione VideoView
« il: 21 Gennaio 2013, 11:58:30 CET »
0
Sto creando un applicazione in ambito Automotive per la riproduzione di file audio e video, solo che sto avendo 2 piccoli problemi con il widget VideoView dell'SDK. Non riesco a capire come nascondere il widget all'avvio dell'Activity nel quale é contenuto, credo che devo intercettare l'evento onCreate del VideoView e nasconderlo, ma non riesco a capire come fare. Il secondo problema é che quando apro un video il widget mi vene ridiemnsionato, ho provato ad intercettare l'evento Prepare e forzare il ridimensionamento del video quando viene sollevato questo evento, ma non succede nulla.

Offline elfo83

  • Utente normale
  • ***
  • Post: 287
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Gestione VideoView
« Risposta #1 il: 22 Gennaio 2013, 21:40:21 CET »
0
Per nascondere il videoView basta che nel file xml metti android:visibility="gone", oppure lo fai direttamente nel codice nel metodo onCreate..
Codice (Java): [Seleziona]
VideoView video = (VideoView)findViewByVideo(r.id.nomeVideo);
video.setVisibility(View.GONE);

per il secondo problema dipende come vuoi ridimensionare il video e come hai scritto il tuo file xml dove c'è il video. Se hai dichiarato android:layout_width e android:layout_height, fill_parent il video andrà ad occupare tutto lo spazio del display. Ti consiglio di mettere  android:layout_width e android:layout_height come wrap_content e poi nel metodo onPrepare() scegli la dimensione del tuo videoView.

Offline farolfo

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy 7 P1000
  • Sistema operativo:
    Windows 7
Re:Gestione VideoView
« Risposta #2 il: 23 Gennaio 2013, 11:14:38 CET »
0
Grazie per la risposta, avevo già usato un soluzione simile a quella che hai postato ma purtroppo non funziona, attualmente invece di nascondere il VideoView la sposto in un area esterna allo schermo in quanto se uso setvisibility il video viene chiuso, invece ho necessità di averlo in esecuzione anche se la viedeoview é nascosta. La funzione che uso per fare questo tipo di operazioni é la seguente:

Codice: [Seleziona]
        private void SetVideoPanel(int X, int Y, int Width, int Height)
        {
            int newW = (int)(GlobalGraphic.Instance.ScaleX * (double)Width);
            int newH = (int)(GlobalGraphic.Instance.ScaleY * (double)Height);
            int newX = (int)(GlobalGraphic.Instance.ScaleX * (double)X);
            int newY = (int)(GlobalGraphic.Instance.ScaleY * (double)Y);
            this.RunOnUiThread(() => this.mp.Layout(newX, newY, newX + newW, newY + newH));
        }

mp é il videoview.

Solo che quando richiamo questa funzione all'avvio dell'activity o nell'evento OnPrepare il widget non vuole sapere di cambiare dimensioni  o di spostarsi all'interno dell'activity mentre in tutti gli altri casi funziona.

Offline elfo83

  • Utente normale
  • ***
  • Post: 287
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Gestione VideoView
« Risposta #3 il: 23 Gennaio 2013, 18:47:21 CET »
0
Ok, se vuoi mantenere la videoView in esecuzione ma nascosta, basta dichiararla nelle prime voci del file Xml (lasciandola visibile) in modo tale che qualche altro elemento ci stia sopra coprendola. Se hai pochi elementi puoi pensare di coprirla con una ImageView.

Offline farolfo

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy 7 P1000
  • Sistema operativo:
    Windows 7
Re:Gestione VideoView
« Risposta #4 il: 23 Gennaio 2013, 20:02:45 CET »
0
Guarda l'XML l'ho dichiarato così

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
   android:id="@+id/widget68"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   xmlns:android="http://schemas.android.com/apk/res/android"
   >
  <FrameLayout
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:layout_x="0px"
     android:layout_y="0px">
     
        <VideoView android:id="@+id/VideoiView1"
        android:layout_height="20px"
        android:layout_width="20px"
       />  
       
        <Alien.AlienView android:id="@+id/AlienView"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       />
   
  </FrameLayout>
</AbsoluteLayout>

AlienView é una classe derivata da SurfaceView e ISurfaceHolderCallback che contiene il thread di disegno della UI del programma.

Offline elfo83

  • Utente normale
  • ***
  • Post: 287
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:Gestione VideoView
« Risposta #5 il: 24 Gennaio 2013, 02:25:47 CET »
0
Dammi un po di tempo per pensarci che sono incasinato a lavoro..