2012-04-07 3 views
0

Я пытаюсь создать представление, в котором воспроизводится видео, и два ImageButtons на одном экране. Я использую VideoView для размещения моего видео и ImageButtons для обеих кнопок. Оба дисплея отображаются правильно, когда я тестирую каждую функцию независимо, но они не будут отображаться вместе одновременно, когда я пытаюсь показать оба на одном экране! Я пробовал несколько макетов (кадр, линейный, относительный), ограничивая VideoView меньшим layout_width & layout_height и пробовал вес в файле xml, но ничего не работает. Отображение этого кажется слишком простым, чтобы требовать пользовательский вид, но я сделаю это, если потребуется.Показать видео и кнопки на одном экране в Android

Вот мои вопросы: знаете ли вы, как сделать кнопки изображения и видеоизображения на одном экране? Можете ли вы использовать представления Android, такие как VideoView и ImageButton, при создании пользовательского представления? Или вы можете просто нарисовать 2D-объекты на холстах в пользовательских представлениях?

Вот мой код в качестве ссылки: XML

<LinearLayout 
     android:id="@+id/videopart" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:gravity="center" 
     android:layout_weight="1"> 
    <VideoView 
     android:id="@+id/videoplayer" 
     android:layout_width="395dp" 
     android:layout_height="111dp" > 
     </VideoView> 
</LinearLayout> 

<LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:layout_weight="1"> 

     <ImageButton 
      android:contentDescription="@string/top" 
      android:id="@+id/topbutton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"     
      android:paddingRight="5dip" 
      android:src="@drawable/yesbutton" 
      android:background="@null"/> 
     <ImageButton 
      android:contentDescription="@string/bottom" 
      android:id="@+id/bottombutton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingLeft="5dip" 
      android:src="@drawable/nobutton" 
      android:background="@null"> 
     </ImageButton>   

    </LinearLayout> 

И активность:

public class iplayer extends Activity { 
VideoView videoHolder; 
MediaPlayer mp; 
ImageButton top, bottom; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  

    getWindow().setFormat(PixelFormat.TRANSLUCENT); 
    videoHolder = new VideoView(this); 

    //if you want the controls to appear 
    videoHolder.setMediaController(new MediaController(this)); 

    Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.interactivevid); 
    videoHolder.setVideoURI(video); 

    // video finish listener: 
    videoHolder.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mp) { 
      // The video has finished, return from this activity 
      finish(); //close activity 
     } 
    }); 

    videoHolder.requestFocus(); 
    /* 
    videoHolder.requestLayout(); 
    videoHolder.invalidate(); 
    videoHolder.getLayoutParams().width = 20;//480;  
    */ 
    //start video 
    drawButtons(); 
    //videoHolder.setPadding(BIND_NOT_FOREGROUND, BIND_NOT_FOREGROUND, BIND_NOT_FOREGROUND, BIND_NOT_FOREGROUND); 
    videoHolder.setPadding(5, 0, 5, 200); 
    setContentView(videoHolder); // used to actually put in video. when removed, shows buttons 
    videoHolder.start();  

} 


private void drawButtons(){ 

    //make buttons invisible 
    top = (ImageButton)findViewById(R.id.topbutton); 
    top.setImageResource(R.drawable.yesbutton); 
    top.setVisibility(View.VISIBLE); 

    bottom = (ImageButton)findViewById(R.id.bottombutton); 
    bottom.setImageResource(R.drawable.nobutton); 
    bottom.setVisibility(View.VISIBLE); 
} 
} 
+0

Он имеет что-то делать с setContentView (держателем видео), что делает видеоизображение полным экраном. Вместо этого кнопки и видео должны каким-то образом передаваться в contentView. – Cal

ответ

0

Я не на компьютере, где я могу проверить это сейчас, но то, что вы можете попробовать является абсолютной компоновкой.

Вы должны быть в состоянии расположить кнопки в верхней части видео с этим вот пример http://www.tutorialforandroid.com/2009/01/absolutelayout-in-android-xml.html

Вы также можете попробовать положить кнопки и VideoView в том же макете

+0

Спасибо pegisys. Абсолютная компоновка тоже не работала. Я попытался поместить кнопки и видеоизображение в один и тот же макет с абсолютными и другими макетами. – Cal

Смежные вопросы