나는 스킨으로 사용하는 2 개의 테마와 그림을 포함하는 응용 프로그램을 개발 중입니다. 코드에서 전체 활동에 대한 주제를 설정할 수 있습니다. 내 문제는 사진과 관련하여 스킨을 정확하게 분리하는 방법을 모르겠다는 것입니다. 예를 들어, 나는 두 가지 주제 (흑백)를 가지고 있으며,이 주제에 맞는 그림들을 가지고있다. 테마에서 코드에서 스킨의 이미지를 모두 설정할 수 있도록 그림을 어떻게 분리 할 수 있습니까?안드로이드에서 스킨을 관리 할 수있는 방법이 있습니까?
답변
죄송합니다. 나는 그 질문을 오해했다. 의견이 자연스러운 흐름을 갖도록 이전의 대답을 유지했습니다.
이 경우 Branding.java 클래스가 있습니다. 이 클래스는 brandname (귀하의 경우에는 Theme)을 가져 와서 해당 테마에 대한 고유 항목이 될 다양한 값과 문자열을 생성합니다. 예를 들어 스플래시 이미지의 이름을 dark_theme_splash.png 및 light_theme_splash.png로 지정합니다. Drawable을로드 할 때 Branding.getSplash()를 호출하면 선택한 현재 테마를 기반으로 드로어 블을 반환합니다.
public static Drawable getSplash() {
switch(MYApplication.Theme){
case LIGHT:
return MYApplication.res.getDrawable(R.drawable.light_theme_splash);
}
return MYApplication.res.getDrawable(R.drawable.dark_theme_splash);
}
과의
당신이 가진 것 브랜딩 :public class Branding {
public static final int LIGHT = 0;
public static final int DARK = 1;
그런 다음 앱에 당신이있는 int current_theme있을 것입니다 그리고 당신은 즉석에서 원하는 테마로 설정합니다. 여기 아래
* 실제로 나는 8 가지의 테마를 가지고 응용 프로그램을 관리 * 요청하지 않은 질문에 대답 기존의 답변입니다. 일부는 극적으로 다릅니다. 지금까지 내가 찾은 최선의 해결책은 두 부분으로 나뉩니다.
) 1. 귀하의 build.xml. 다른 스킨이 적용된 앱을 제작 중이므로 .apk의 이름이 다르게 상상됩니다. build.xml에서 다른 대상을 활용하십시오. 예 :
<target name="release-themeone">
<antcall target="-do-release" inheritAll="false">
<param name="app.pkg" value="mapmyfitness" />
<param name="app.pkg.name" value="com.themeone.android2" />
<param name="launcher.icon" value="common_icon_launcher" />
<param name=".app.name" value="DarkTheme+" /> />
</antcall>
</target>
2.) 이렇게하면 다른 빌드에 대해 서로 다른 매개 변수를 설정할 수 있습니다. 필자의 경우에는 드로어 블이 너무 많아서 다양한 드로어 블 폴더 내에서 드로어 블을 모두 관리하는 것이 번거로웠습니다. 따라서 드로어 블 폴더 자체에 모든 공통 자산을 넣습니다. 그런 다음 드로어 블 폴더 구조를 복제 한 드로어 블 외부에 폴더를 만들었지 만 테마의 이름 내에 포함되었습니다. 예를 들어 Themeone 폴더에는 Drawable, Drawable-hdpi 등이 포함됩니다. 이렇게하면 각 특정 대상이 필요한 드로어 블만 가져 오는 방식으로 빌드 시스템을 조작 할 수있었습니다.
<copy todir="bin/${app.pkg}/res/drawable" overwrite="true">
<fileset dir="./brands/${brand.prefix}/drawable"/>
</copy>
<copy todir="bin/${app.pkg}/res/drawable-hdpi" overwrite="true">
<fileset dir="./brands/${brand.prefix}/drawable-hdpi"/>
</copy>
<copy todir="bin/${app.pkg}/res/drawable-mdpi" overwrite="true">
<fileset dir="./brands/${brand.prefix}/drawable-mdpi"/>
</copy>
<copy todir="bin/${app.pkg}/res/drawable-xhdpi" overwrite="true">
<fileset dir="./brands/${brand.prefix}/drawable-xhdpi"/>
</copy>
이 모든 것은 우리가 가지고있는 다양한 빌드 대상을 통과하는 build.xml의 for 루프에 들어 있습니다.
희망이 있습니다.
- 1. 안드로이드에서 태그를 사용할 수있는 방법이 있습니까?
- 2. 안드로이드에서 GPS없이 속도를 얻을 수있는 방법이 있습니까?
- 3. 안드로이드에서 중요한 데이터를 안전하게 메모리에서 처리 할 수있는 방법이 있습니까?
- 4. 안드로이드에서 LCD 백라이트를 조작 할 수있는 방법이 있습니까?
- 5. Vim에서 여러 프로젝트를 관리 할 수있는 플러그인/방법이 있습니까?
- 6. 수집 할 수있는 방법이 있습니까?
- 7. 리소스마다 설정을 관리 할 수있는 보석이 있습니까?
- 8. ActionScript에서 프로그래밍 방식으로 플렉스 스킨을 추가하는 방법이 있습니까?
- 9. 안드로이드에서 키보드로 올라 오는 탭을 막을 수있는 방법이 있습니까?
- 10. 거기에 mysql의 대기 시간을 관리 할 수있는 방법이 있습니다
- 11. 안드로이드에서 완전한 스택 추적을 볼 수있는 방법이 있습니까?
- 12. 안드로이드에서 SMS가 언제 읽히는 지 알 수있는 좋은 방법이 있습니까?
- 13. Flex Spark 애플리케이션에서 스크롤바 스킨을 전역으로 설정하는 방법이 있습니까?
- 14. 안드로이드에서 네트워크 연결이 끊어 질 때를 알 수있는 방법이 있습니까?
- 15. Mediafire 링크를 다운로드 할 수있는 방법이 있습니까?
- 16. DataGrid에서 CheckBox를 표시 할 수있는 방법이 있습니까
- 17. JavaScript로 마우스를 구별 할 수있는 방법이 있습니까?
- 18. XDocument에 서명 할 수있는 방법이 있습니까?
- 19. 쿼리 작성기없이 제거 할 수있는 방법이 있습니까
- 20. 변수를 var_dump 할 수있는 방법이 있습니까?
- 21. PDF를 가로로 스크롤 할 수있는 방법이 있습니까?
- 22. PictureBox에 반투명하게 페인트 할 수있는 방법이 있습니까?
- 23. TriggerAction 클래스에서 상속 할 수있는 방법이 있습니까?
- 24. 아이폰에 데이터베이스를 공유 할 수있는 방법이 있습니까?
- 25. TinyScheme에서 입출력을 라우팅 할 수있는 방법이 있습니까?
- 26. 결과 쿼리를 메모리에로드 할 수있는 방법이 있습니까?
- 27. 일반 methodInfo를 호출 할 수있는 방법이 있습니까?
- 28. iDevice 사용자를 식별 할 수있는 방법이 있습니까?
- 29. 인라인 문자열을 "플러시"할 수있는 방법이 있습니까?
- 30. jQuery에서 이벤트를 위임 할 수있는 방법이 있습니까?
하지만 난 단지 하나의 APK를 구축합니다. 나는 그들을 동적으로 변화시킬 수 있기를 원한다. 검은 피부를 선택하는 경우처럼이 스킨에 연결된 모든 이미지는 테마를 변경하기 전에 표시된 이미지 대신 표시됩니다. –