2011-02-07 14 views
7

tôi muốn hiển thị hộp thoại tiến trình trước khi phát video. tôi đã thử ví dụ liên kết dưới đây để phát video.cách hiển thị thanh tiến trình trước khi phát video

http://davanum.wordpress.com/2009/12/04/android-%E2%80%93-videomusic-player-sample-take-2/

nó hoạt động nhưng phải mất nhiều thời gian để đưa cho chơi video vì vậy tôi muốn hiển thị một hộp thoại tiến triển trước khi bắt đầu video. vì vậy xin vui lòng tel cho tôi cách hiển thị hộp thoại tiến trình trước khi phát video.

Cảm ơn bạn.

Trân trọng.

+0

phương pháp tiếp cận tốt hơn tại đây http://www.quicktips.in/how-to-show-progressbar-while-loading-a-video-in-android-videoview/ –

Trả lời

18

Thứ nhất, tuyên bố tiến độ thoại

private static ProgressDialog progressDialog; 

Sau đó, trong onCreate, trước khi gọi runOnUiThread, bắt đầu hộp thoại

progressDialog = ProgressDialog.show(this, "", "Loading...", true); 

Trong playVideo, thiết lập một OnPreparedListener rằng sẽ bỏ qua hộp thoại khi video đã sẵn sàng để chơi

mVideoView.setOnPreparedListener(new OnPreparedListener() { 

    public void onPrepared(MediaPlayer arg0) { 
     progressDialog.dismiss(); 
     mVideoView.start(); 
    } 
}); 
2

Tôi khuyên bạn nên xem AsyncTask documentation, điều này có vẻ lý tưởng để thực hiện tải trước video. Điều này sẽ cho phép bạn giữ cho giao diện người dùng của bạn ổn định trong quá trình tải. Có một ví dụ về việc sử dụng phương thức AsyncTask here.

Để thêm một hộp thoại tiến bộ:

  • Tạo một đối tượng riêng ProgressDialog như là một phần của một lớp mở rộng của AsyncTask.
  • Trong onPreExecute() phương pháp mà bạn có thể thực hiện hộp thoại tiến trình thiết lập lên, chẳng hạn như: pd.setMessage(...) pd.setTitle(...) pd.show(...)
  • Trong phương pháp onPostExecute(...), bỏ qua hộp thoại: pd.dismiss();

Ngoài ra, bạn có thể cập nhật các hộp thoại tiến trình sử dụng của nó Phương pháp incrementProgressBy(...) hoặc luân phiên có hoạt ảnh lặp sử dụng phương thức setIndeterminate(...). Cung cấp phản hồi của người dùng về tiến độ đã tải là một ý tưởng hay trong thiết kế giao diện người dùng :)

Tôi hy vọng điều này sẽ hữu ích!

8

IMHO trong trường hợp này là m quặng duyên dáng để sử dụng widget ProgressBar insted của hộp thoại Progress. Có vẻ tốt hơn trên bề mặt video. Bạn có thể thêm các thanh tiến trình để bố trí của hoạt động của bạn trên VideoView:

<ProgressBar 
    android:id="@+id/progress" 
    android:indeterminate="true" 
    android:indeterminateBehavior="repeat" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:layout_gravity="center"> 
</ProgressBar> 

Trong onCreate, trước khi gọi runOnUiThread, cho thấy sự tiến bộ:

mProgress = (ProgressBar)findViewById(R.id.progress); 
mProgress.setVisibility(View.VISIBLE); 

Trong callback onPrepared giấu sự tiến bộ:

mProgress.setVisibility(View.INVISIBLE);