public boolean onTouch(View v, MotionEvent event) {
  // TODO Auto-generated method stub
  if(v != flipper){ //터치 이벤트가 일어난 뷰가 ViewFlipper가 아니면 return
   return false;
  }
  
  if(event.getAction() == MotionEvent.ACTION_DOWN){
   xAtDown = event.getX(); //터치 시작지점 x좌표 저장
  }
  else if(event.getAction() == MotionEvent.ACTION_UP){
   xAtUp = event.getX(); //터치 끝난지점 x좌표 저장
   int tepChildCount = flipper.getChildCount();
   if(xAtUp < xAtDown){
    //왼쪽 방향 애니메이션 지정
    flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.left_in));
    flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.left_out));
    
    //현재 표시되는뷰 index가 flipper의 자식뷰의 갯수와 같고 현재까지 추가된뷰가 pagecount보다 작다면 뷰추가
    if((flipper.getDisplayedChild() == (flipper.getChildCount()-1)) &&
      (flipper.getChildCount() < Integer.parseInt(attrStorage.get("pagecount").toString()))){
           //Base VIew 생성 함수 호출
           Log.e("kjh", "hashmap : " + attrStorage);
           String pageTagName = "page" + (flipper.getChildCount()+1); //현재까지 추가된 페이지의 다음페이지
           
           AddPage(pageTagName);
    }
    
    if(flipper.getDisplayedChild() < (flipper.getChildCount()-1)){
     
     //페이지전환시 VideoView의 잔상이 남는현상을 해결
     if(subVideoView != null){
      if(subVideoView.isPlaying()){
       Log.e("kjh", "subVideoView is playing! : " + subVideoView.getBufferPercentage());
       subVideoView.stopPlayback();
       subVideoView.setVisibility(View.GONE);
      }
      else if(subVideoView.getVisibility() == View.GONE){
       Log.e("kjh", "subVideoView is gone! : " + subVideoView.getBufferPercentage());
       subVideoView.setVisibility(View.VISIBLE);
       subVideoView.start();
      }
     }
     
     //다음 View 보여줌
     flipper.showNext();
    }
    
   }
   else if(xAtUp > xAtDown){
    //오른쪽 방향 애니메이션 지정
    flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.right_in));
    flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.right_out));
    
    if(flipper.getDisplayedChild() > 0){
     
     //페이지전환시 VideoView의 잔상이 남는현상을 해결
     if(subVideoView != null){ //페이지가 추가되어있다면
      if(subVideoView.isPlaying()){
       Log.e("kjh", "subVideoView is playing! : " + subVideoView.getBufferPercentage());
       subVideoView.stopPlayback();
       subVideoView.setVisibility(View.GONE);
      }
      else if(subVideoView.getVisibility() == View.GONE){
       Log.e("kjh", "subVideoView is gone! : " + subVideoView.getBufferPercentage());
       subVideoView.setVisibility(View.VISIBLE);
       subVideoView.start();
      }
     }
     
     //이전 View 보여줌
     flipper.showPrevious();
    }
  
   }
  }
  
  return true;
 }


 

ViewFlipper 에서 페이지전환시 맨마지막 자식뷰상태에서 현재까지 추가된뷰가 PageCount보다 작다면 뷰를 추가하는 코드입니다.

 

그런데 추가되는 자식뷰형태가 BaseView로 ImageView를 두고(전체화면) 특정좌표에 SubView로 VideoView를 가지고 있는 페이지가 있습니다.

 

그래서 페이지전환시 VideoView를 종료 시켜주고 싶은데요.

 

조건을 isPlaying()으로 만 주니 동영상이 재생될때말고 로딩중이라던가 그럴때는 처리가안되더라구요.

 

조건을 어떤식으로 줘야 VideoView를 항상 종료시킬수있을까요?

 

 

 

 //페이지전환시 VideoView의 잔상이 남는현상을 해결
     if(subVideoView != null){ //페이지가 추가되어있다면
      if(subVideoView.isPlaying){
       Log.e("kjh", "subVideoView is playing! : " + subVideoView.getBufferPercentage());
       subVideoView.stopPlayback();
       subVideoView.setVisibility(View.GONE);
      }
      else if(subVideoView.getVisibility() == View.GONE){
       Log.e("kjh", "subVideoView is gone! : " + subVideoView.getBufferPercentage());
       subVideoView.setVisibility(View.VISIBLE);
       subVideoView.start();
      }
     }
     
     //이전 View 보여줌
     flipper.showPrevious();


 

이부분이 종료시켜주는부분인데

 

조건을 어떻게줘야할까요