마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

[재업..] 비디오뷰 관련해서 질문이 있습니다.

0 추천

 

안녕하세요.

비디오뷰 관련해서 질문이 있습니다.

아래의 Example.xml코드를 실행을 하면, 비디오가 속한 레이아웃을 클릭시 동영상이 오류 없이

잘 실행이 되는데, 이 부분을 그대로 사용해서, 제가 사용하고 있는 맨 아래의 파일의 경우 각각의

switch문마다 개별적으로 비디오를 다른 영상을 넣어주어야 하는데 어떻게 소스를 구성 해야 각 개별적으로

비디오뷰의 동영상을 넣을수 있는지 도무지 그 방법을 잘 모르겠습니다.ㅠㅠ 며칠동안 아래의 Example.xml의

코드를 보면서 제 소스에 적용을 시켜보려고 했는데 함수 부분도 그렇고 시행착오를 너무많이해서

하다하다 못해 질문을 올립니다 ㅠ  어떻게 해주어야 switch부분에서 깔끔하게

만들어 줄수 있을지 모르겠습니다.

아래의 소스를 첨부해 보겠습니다. 소스가 좀 더 초과하는 부분은 아래의 댓글에 달아 보겠습니다. 

 

아래의 xml파일부분과, java 파일은 실행을 하면, raw에 있는 있는 fountain.mp4에 영상이 잘 진행이 됩니다

<Example.xml 파일>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.it.vedio.MainActivity">

<LinearLayout
    android:onClick="play"
    android:clickable="true"
    android:paddingTop="2sp"
    android:paddingBottom="2sp"
    android:tag="fountain_night"
    android:id="@+id/video1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <VideoView
        android:onClick="play"
        android:clickable="true"
        android:visibility="visible"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:id="@+id/videoview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

</LinearLayout>

 

 

Kind카인드 (3,600 포인트) 님이 2016년 11월 10일 질문
<Example.자바파일>
package com.example.it.vedio;

import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.MediaController;
import android.widget.VideoView;

public class MainActivity extends AppCompatActivity {

    VideoView videoView=null;

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

       videoView =(VideoView)findViewById(R.id.videoview);
    }


    public  void play(View v){
        int id= v.getId();
        LinearLayout layout=(LinearLayout)findViewById(id);
        String tag=(String)layout.getTag();

        Resources res=getResources();

        if(videoView.isPlaying()){
            videoView.pause();
        }
        else
        {
            int id_video=res.getIdentifier(tag,"raw",getPackageName());
            Uri uri=Uri.parse("android.resource://com.example.it.vedio/"+id_video);

            VideoView videoView=(VideoView)findViewById(R.id.videoview);
            videoView.setVideoURI(uri);
            videoView.start();
            videoView.setVisibility(View.VISIBLE);


            MediaController mc= new MediaController(this);
            videoView.setMediaController(mc);
        }
    }
}








< 아래는 제가 만드는 파일 > 여기서 어떻게 스위치문을 구성해야 비디오를 각 case별로 다르게 넣어줄수 있을지 모

르겠어요... 비디오뷰의 값을 받아오는 R.id.ScrollView_image 같은 경우에는 HorizentalScrollView을 사용해

가로로 넘겨볼수 있는 이미지뷰들 옆에 VideoView를 설정해서 만들어 놓았습니다.

소스를 어떻게 구성해야할지 ㅠ 그대로 따라하려고 해도 쉽지가 않네요 ..

위의 예제 에서 조금 변형시켜서, 레이아웃이 아닌 영상을 클릭했을때 실행되고 한번 더 누르면 정지시키도록 하고싶

은데 이렇게 하려면, 어떻게 switch문과 구조를 변경시켜주어야 할지 모르겠습니다..
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.VideoView;

public class Ibc_Internet extends AppCompatActivity {

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

        final int position = getIntent().getIntExtra("pos",0);

       
        switch(position)
        {

            case 0:
              
                ImageView First_img5 = (ImageView) findViewById(R.id.ScrollView_Image5);
                First_img5.setImageResource(R.drawable.first_stillcut_five);

                

                break;

            case 1:
              
                ImageView Second_img5 = (ImageView) findViewById(R.id.ScrollView_Image5);
                Second_img5.setImageResource(R.drawable.second_stillcut_five);

                break;

            case 2:
               

                ImageView Third_img4 = (ImageView) findViewById(R.id.ScrollView_Image4);
                Third_img4.setImageResource(R.drawable.third_stillcut_four);

                break;

            case 3:
             

                ImageView Fourth_img5 = (ImageView) findViewById(R.id.ScrollView_Image4);
                Fourth_img5.setImageResource(R.drawable.fourth_stillcut_five);


                break;

            case 4:
               

                ImageView Fifth_img5 = (ImageView) findViewById(R.id.ScrollView_Image5);
                Fifth_img5.setImageResource(R.drawable.fifth_stillcut_five);

                break;
        }
    }
}

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...