2013-03-09 1 views
0

안녕하세요 저는 비디오를 재생하는 안드로이드 애플 리케이션에서 일하고 있습니다. 이제는 비디오가 전체 화면에서 재생되도록 제어하고 싶습니다. 코드가 있지만 그 변수가 유효한 유형이 아니라는 오류가 있습니다 된 onMeasure 나는 컴파일 문제가 브래킷 문제가 있다는 것입니다 그OnMeasure 메서드를 재정의하는 중 오류가 발생했습니다.

public class video extends Activity { 


String SrcPath = "rtsp://v8.cache3.c.youtube.com/CjYLENy73wIaLQltaP8vg4qMsBMYDSANFEIJbXYtZ29vZ2xlSARSBXdhdGNoYOL6qv2DoMPrUAw=/0/0/0/video.3gp"; 

/** Called when the activity is first created. */ 

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.video1); 


protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec){ 
    int parentWidth = MeasureSpec.getSize(widthMeasureSpec); 
    int parentHeight = MeasureSpec.getSize(heightMeasureSpec); 
    this.setMeasuredDimension(parentWidth/2, parentHeight); 
    this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight)); 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 


VideoView myVideoView = (VideoView)findViewById(R.id.vview); 
myVideoView.setVideoURI(Uri.parse(SrcPath)); 
myVideoView.setMediaController(new MediaController(this)); 
myVideoView.requestFocus(); 

} 
} 

감사

답변

0

를 해결하는 방법을 잘 모릅니다.

protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec){ 
    int parentWidth = MeasureSpec.getSize(widthMeasureSpec); 
    int parentHeight = MeasureSpec.getSize(heightMeasureSpec); 
    this.setMeasuredDimension(parentWidth/2, parentHeight); 
    this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight)); 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 

를 이동하는 것은 그래서 onCreate()에서 하지입니다. 현재 메소드는 다른 메소드를 직접 감쌀 수 없습니다.

또한 onMeasure()Activity의 메소드가 아니며 대신 View입니다. 문서를 검토하여 원하는 작업을 정확하게 파악해야합니다.

+0

확인 나는 한 OnCreate 그것을 이륙하고 한 OnCreate 후 배치하지만 여전히에서 새에 대한 오류를 받고있다. setlayoutparams .... 내 레이아웃으로 바꿔야한다고 생각하고 ..... 그게 내가 한 일이지만 변수로 해결할 수는 없다. – user1794499

+0

@ user1794499'onMeasure()'는 View 메서드이다. . 당신은'활동'에서 일하고 있습니다. layout params의 설정은 View 클래스 용이므로'this'를 사용합니다. 대신 비디오 뷰를 원한다고 생각하는 뷰를 참조하는 것이 좋습니다. 레퍼런스를 인스턴스 변수로 만들면됩니다. –

+0

괜찮습니까?하지만 내 변수는 int 형이어야합니다. 친구를 괴롭히는 것에 대해 미안합니다. – user1794499

0

당신이 당신의 클래스의 메소드 이러한 두 가지 기능을 할 수 있습니다 것 같아 :

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.video1); 

    // Set up the video when you create the activity 
    VideoView myVideoView = (VideoView)findViewById(R.id.vview); 
    myVideoView.setVideoURI(Uri.parse(SrcPath)); 
    myVideoView.setMediaController(new MediaController(this)); 
    myVideoView.requestFocus(); 
} 

// On measure should be a different method also in the class video 
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) { 
    int parentWidth = MeasureSpec.getSize(widthMeasureSpec); 
    int parentHeight = MeasureSpec.getSize(heightMeasureSpec); 
    this.setMeasuredDimension(parentWidth/2, parentHeight); 
    this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight)); 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 
+0

에 대해서. u 매개 변수 .setlayoutparams ..에서 새 매개 변수를 확인해 주실 수 있나요? 내 xml 파일 이름이어야합니까? – user1794499

+0

잘 모르겠지만 xml을 보면 알 수 있습니다. video1.xml의 최상위보기는 ____ 레이아웃이라고 할 수 있습니다. 예를 들어, LinearLayout 일 수도 있습니다.이 경우에는 'new LinearLayout.LayoutParams (parentWidth/2, parentHeight)'매개 변수를 만들 것이라고 생각합니다. – silleknarf

관련 문제