3

홈 화면에서 전화기의 방향이 바뀔 때 (예 : 키보드가 튀어 나오는 경우) 실행할 코드가 appwidget에 있습니다. 내 appwidget에서 imageview에서 변경하고 싶은 이미지가 있습니다. 런타임까지 이미지 파일의 이름을 모르기 때문에 오리엔테이션과 연결된 다른 레이아웃 (예 : "레이아웃"및 "레이아웃 - 랜드")을 사용할 수 없습니다. 런타임에 작성됩니다. 홈 화면이 표시되고 내 appwidget이 활성화되어 있고 방향이 변경된 경우에만 코드가 실행되도록 트리거 할 수 있습니까?appWidget 오리엔테이션 코드

나는 configuration_change 방송을 청취 할 수 있었지만 전화가 풍경이나 인물로 바뀔 때마다 실행되며 홈 화면이 표시 될 때만 해당 방송이 실행되기를 원합니다. 나는 이것을하기 위해 안드로이드에서 좋은 방법을 생각할 수 없다. 감사합니다

라이언

+0

홈 화면이 활동 스택 맨 위에 있는지 여부를 아는 것이 있습니까? 또는 무엇이 무엇인지 알아 내는가? – rgrandy

+0

이론적으로는 http://stackoverflow.com/questions/6285410/android-detect-if-an-activity-is-on-the-top-of-the-history-stack을 참조하십시오.하지만 홈 화면은 특정 활동, 아마도 당신이 사용하는 장치에 따라 다를 수 있습니다. –

답변

3

런타임에 생성 된 이미지를 위해이 일을하는 좋은 방법이 없습니다.

한 가지 방법은 두 버전의 이미지를 모두 만들고 사용중인 레이아웃/레이아웃 랜드에 따라 보이는 두 개의 ImageView를 만드는 것입니다. (따라서 RemoteViews는 두 ImageViews를 모두 업데이트하지만 올바른 이미지 뷰만 표시됩니다.)

0

Jeff,이 제한의 이유는 무엇입니까? 런타임시 생성 된 이미지를 사용하거나 런타임시 RemoteView를 구축하는 것이 좋을 것입니다. 미리 컴파일 된 XML을 사용하는 것보다는 유연성이 떨어집니다.

0

기본적으로 액티비티에서의 onConfigurationChanged()에서 위젯을 업데이트하고 안드로이드 추가 http://groups.google.com/group/android-developers/browse_thread/thread/0eb7c016be05e0b9/d31b312e2fa8530d

에 대한 추가 정보를 원하시면 있습니다 : 매니페스트에서 그 활동에 대한 configChanges이 = "방향". 나쁜 점은 모든 유스 케이스를 다루지는 않는다는 것입니다.

+0

활동 대신 서비스를 사용하여 수행 할 수 있습니다. 그게 더 많은 유스 케이스를 확실히 커버 하겠지만, 여전히 AppWidget이 있고 앱이 종료 된 경우가 있습니다. –