2010-04-02 29 views
10

Tôi muốn sử dụng hoạt ảnh trên Tiện ích trang chủ, ví dụ: AppWidgetProvider. Tôi đã hy vọng để sử dụng "Khung Animation" kỹ thuật:Có cách nào để tạo hoạt ảnh trên tiện ích con không?

http://developer.android.com/guide/topics/graphics/2d-graphics.html#frame-animation

mà tôi đã sử dụng thành công trong một hoạt động. Nhưng tôi không thể dịch mã đó thành một AppWidgetProvider. Về cơ bản, trong một AppWidgetProvider, tôi tạo và làm việc với một đối tượng RemoteViews, mà AFAIK không cung cấp cho tôi phương thức để tham chiếu đến ImageView trong bố cục để tôi gọi start() trên hình động. Cũng không có trình xử lý hoặc gọi lại khi tiện ích hiển thị để tôi có thể thực hiện cuộc gọi start().

Có cách nào khác có thể thực hiện được không? Tôi cho rằng tôi có thể tự làm phim hoạt hình một cách nhanh chóng với các cuộc gọi onUpdate() rất nhanh, nhưng điều đó dường như rất đắt.

Trả lời

5

Không làm động các tiện ích ứng dụng, trừ khi bạn viết cho bạn ứng dụng màn hình chính.

Bạn đúng là bạn không có cách nào để thao tác một số AnimationDrawable hoặc Animation để chúng hoạt động với tiện ích ứng dụng.

Bạn cũng đúng rằng "các cuộc gọi onUpdate() rất nhanh trên tiện ích con dường như quá đắt", bởi vì nó là. Các bản cập nhật cho các tiện ích ứng dụng liên quan đến giao tiếp giữa các quá trình, giữa AppWidgetProvider và quá trình lưu trữ màn hình chính của bạn. Hệ thống này được thiết kế để cập nhật sau mỗi 30 phút hoặc hơn, không phải 30 khung hình mỗi giây.

+1

Nếu tôi muốn tạo một nút hoạt ảnh như biểu tượng làm mới trên ứng dụng TripeAdvisor, Tôi nên làm gì? –

+0

Điều này có bao gồm các hoạt ảnh đơn giản nằm bên trong API Android không? Ví dụ, một progressBar tùy chỉnh có thể vẽ được quay một hình ảnh của ứng dụng? Điều gì có thể, và điều gì là không thể? –

+0

@androiddeveloper: Về cơ bản, mọi hoạt ảnh mà bạn có thể thể hiện trong tài nguyên bố cục bạn sử dụng cho 'RemoteViews' sẽ hoạt động. Bất cứ điều gì đòi hỏi bạn phải gọi phương pháp trên quan điểm, hình ảnh động, vv sẽ không. Ngoài ra, hoạt ảnh liên tục có thể được xem tiêu cực bởi người dùng, vì lý do sức mạnh và mất tập trung. – CommonsWare

6

Tôi hiện đang tạo một tiện ích con "cần" hoạt ảnh sprite và tôi đã đặt một bài đăng trên blog về cách animate home widget. Có, nó là tốn kém để làm, vì vậy tôi làm điều đó chỉ khi các widget là cần thiết. BTW, hoạt ảnh gốc của Android không được hỗ trợ ở chế độ xem từ xa.

Edit:

Demo Project is up.

5

Một Widget có sẵn để sử dụng trong một RemoteView là ProgressBar. Nó sẽ animate chính nó và sẽ không nhai lên tài nguyên. Một ProgressBar trong xác định đó là một hình vuông sẽ che phủ khá tốt trên appwidget màn hình chính. Xem sample code from Android site

4

Một lựa chọn khác để animate một widget là việc sử dụng ViewFlipper, nơi người ta có thể sử dụng inAnimationoutAnimation:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:flipInterval="5000" 
      android:autoStart="true" 
      android:inAnimation="@android:anim/fade_in" 
      android:outAnimation="@android:anim/fade_out" 
      android:animateFirstView="true"/> 
2

Tạo hình ảnh động tùy chỉnh. Tạo ProgressBar và đặt trong android: indeterminateDrawable hoạt ảnh của bạn. Thêm ProgressBar vào bố cục tiện ích của bạn và hiển thị nó (ẩn)

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