2012-02-11 44 views
9

Tôi đang thiết kế trình phát đa phương tiện với bố cục tùy chỉnh. Tôi muốn giao diện biến mất sau 16 giây không hoạt động. Nó sẽ xuất hiện trở lại nếu người dùng chạm vào màn hình. Đoạn mã được cung cấp bên dưới:Tự động ẩn bố cục trình phát media trong android

public void showhideControllers(int n) { 
    if (n == 1) { 
     /* make layout invisible */ 

     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      public void run() { 
       volumeBar.setVisibility(View.INVISIBLE); 
       audioControllView.setVisibility(View.INVISIBLE); 
       topBar.setVisibility(View.INVISIBLE); 
      } 
     }, 16000); 

    } else { 
     /* make layout visible */   
     volumeBar.setVisibility(View.VISIBLE); 
     topBar.setVisibility(View.VISIBLE); 
     audioControllView.setVisibility(View.VISIBLE); 

     showhideControllers(1); 
    } 

} 

    @Override 
public void onUserInteraction() { 
    super.onUserInteraction(); 
    showhideControllers(2); 
} 

Bên trong onCreate(), tôi bắt đầu hẹn giờ bằng cách gọi showhideControllers (1) ;. Bây giờ, khi tôi nhấp vào màn hình, bố cục sẽ xuất hiện trở lại và bộ hẹn giờ được đặt lại. Nhưng nếu tôi ngẫu nhiên tiếp tục nhấp vào màn hình, bộ hẹn giờ không được đặt lại sau mỗi lần nhấp và bố cục sẽ biến mất sau 16 giây. Bạn có thể cho tôi biết tôi đang làm gì sai?

Trả lời

11

Xin lỗi vì đã trả lời muộn. Nhưng đây là giải pháp. Tôi đã gặp vấn đề tương tự. Vì vậy, tôi đã thực hiện các thay đổi sau trong mã của bạn, hãy thử điều này và cho tôi biết nếu nó giúp bạn.

private Runnable hideControllerThread = new Runnable() { 

    public void run() { 
      volumeBar.setVisibility(View.GONE); 
      audioControllView.setVisibility(View.GONE); 
      topBar.setVisibility(View.GONE); 
    } 
}; 


public void hideControllers() { 
     hidehandler.postDelayed(hideControllerThread, 15000); 
} 

public void showControllers() { 
     volumeBar.setVisibility(View.VISIBLE); 
     topBar.setVisibility(View.VISIBLE); 
     audioControllView.setVisibility(View.VISIBLE); 
     hidehandler.removeCallbacks(hideControllerThread); 
     hideControllers(); 
} 

@Override 
public void onUserInteraction() { 
     super.onUserInteraction(); 

     if (audioControllView.getVisibility() == View.VISIBLE) { 
      hidehandler.removeCallbacks(hideControllerThread); 
      hideControllers(); 
     } else { 
      showControllers(); 
     } 
} 
+0

hey this is working ... thanks man .. – curiousguy

+0

Cảm ơn rất nhiều phản hồi của bạn. – jyotiprakash

Các vấn đề liên quan