2012-05-01 2 views
0

문제가 있습니다. 내 미디어 플레이어의 화면 비율은 onResume 후 엉망이된다는 가로 세로 비율을 얻고 내 서피스 뷰 SurfaceView에두고 기능이었다 onResume() 이후의 종횡비가 잘못되었습니다.

private void aspectRatio(MediaPlayer vp) 
{ 

    Integer videoHeight; 
    Integer videoWidth; 
    //Obtain current video's dimensions for keeping aspect Ration the same on all devices 
    videoHeight = vp.getVideoHeight(); 
    videoWidth = vp.getVideoWidth(); 

    //Get width of screen 
    Integer screenWidth = getWindowManager().getDefaultDisplay().getWidth(); 
    Integer screenHeight = getWindowManager().getDefaultDisplay().getHeight(); 

    Log.i("AspectRatio VP WxH", videoHeight.toString() +" x " + videoWidth.toString()); 
    Log.i("AspectRatio Screen WxH", screenHeight.toString() + " x " + screenWidth.toString()); 
    ViewGroup.LayoutParams viewParameters = view.getLayoutParams(); 

    float ratioWidth = (float)screenWidth/(float)videoWidth; 
    float ratioHeight = (float)screenHeight/(float)videoHeight; 
    float aspectRatio = (float)videoWidth/(float)videoHeight; 

    if(ratioWidth>ratioHeight) 
    { 
     viewParameters.width = (int)(screenHeight * aspectRatio); 
     viewParameters.height= screenHeight; 
    } 
    else if(ratioWidth < ratioHeight) 
    { 
     viewParameters.width = screenWidth; 
     viewParameters.height = (int) (screenHeight/aspectRatio); 
    } 

    Integer x = viewParameters.width; 
    Integer y = viewParameters.height; 
    Log.i("Screen", x.toString() + " " + y.toString()); 
    view.setLayoutParams(viewParameters); 
} 

라고합니다. 문제는 onResume() 이후에 너비가 예상보다 훨씬 작다는 것입니다. 잘못 된 것을 볼 수 있습니까?

답변

0

화면이 변경되면 화면 비율이 다시 만들어지기 때문에 종횡비가 엉망이되었습니다. 이제 aspect ratio가 onSurfaceChanged로 설정되도록 변경했습니다. 현재 문제없이 작동합니다.