11

Tôi đang gặp vấn đề về định hướng với Hình nền động mà tôi đã viết. Về cơ bản canvas sẽ xoay tùy thuộc vào ứng dụng được mở ở trên nó. Tôi đã thử nghiệm điều này và nhận ra rằng phương thức onSurfaceChanged() đang kích hoạt khi tôi trở về màn hình chính từ một ứng dụng đã mở trước đó, định hướng của người dùng đã được thay đổi.Ngăn thay đổi định hướng hình nền động khi mở một ứng dụng và định hướng được thay đổi?

Tôi cho rằng câu hỏi hay hơn sẽ là, Tại sao bề mặt hình nền động của tôi thay đổi khi ứng dụng được mở và hướng của nó thay đổi? Có cách nào để ngăn định hướng Live Wallpaper của tôi thay đổi không? Cảm ơn, hy vọng rằng có ý nghĩa?

+0

Bạn có định nghĩa định hướng trong tệp kê khai không? Hoặc thậm chí lập trình? Nếu không, câu trả lời cho câu hỏi [this] (http://stackoverflow.com/q/2150287/404469) sẽ hữu ích. – gary

+0

Không có hoạt động nào được sử dụng (bên cạnh hoạt động cài đặt) trong một hình nền động. Một LWP mở rộng WallpaperService trong đó nó tạo ra một thể hiện của Class Engine trong hàm onCreateEngine(). – worked

+0

Chúng tôi có thể lấy thêm thông tin không? Một số ứng dụng đang gây ra điều này là gì? Định hướng có vĩnh viễn hay chỉ tạm thời cho đến khi màn hình chính đang được vẽ lại? Một số ứng dụng như camera tích hợp thực sự buộc màn hình thay đổi hướng, nhưng những thay đổi này sẽ được hoàn tác khi ứng dụng hoàn tất. –

Trả lời

1

Ứng dụng Android khởi động lại hoạt động khi hướng thay đổi. Bạn có thể sử dụng

  1. android: configChanges trong biểu hiện của bạn. Hoạt động này được tắt và khởi động lại theo mặc định, khi thay đổi cấu hình xảy ra trong thời gian chạy, nhưng việc tuyên bố cấu hình với thuộc tính này sẽ ngăn hoạt động khởi động lại. Thay vào đó, hoạt động vẫn chạy và phương thức của nó được gọi.
  2. sử dụng android: screenOrientatin = "chân dung" hoặc "cảnh quan" nó sẽ buộc các ứng dụng chạy ở chế độ bạn chỉ định. Tuy nhiên nó sẽ không ngăn chặn hoạt động bị tắt và khởi động lại.
+0

hi, tại sao hoạt động bắt buộc phải khởi động lại và làm cách nào để ngăn chặn điều đó, đặc biệt tôi cần điều này trong ngữ cảnh của hình nền động – Maysam

1

Bạn có thể xử lý hướng màn hình từ trong android.service.wallpaper.WallpaperService. lớp học với phương pháp sau:

public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) 

... chỉ cần xử lý sự kiện cho phù hợp.

Bạn KHÔNG THỂ thêm android: configChanges cũng không android: screenOrientation đến một WallpaperService! (Mà bạn đang sử dụng khi tạo hình nền động)

Tôi đã thêm điều này làm nhận xét cho câu trả lời của "Anirudha", nhưng tôi không có đủ danh tiếng để làm như vậy.

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