array.xml에 색상을 저장하고 Color [] 배열로 되 돌리는 방법
array.xml 안에 색상 값을 저장하고 내 코드에서 Color [] 배열로 다시 검색하려면 어떻게해야합니까?
미리 감사드립니다!
색상 리소스를 정의한 다음 액세스를 위해 배열에 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="bright_pink">#FF007F</color>
<color name="red">#FF0000</color>
<color name="orange">#FF7F00</color>
<color name="yellow">#FFFF00</color>
<color name="chartreuse">#7FFF00</color>
<color name="green">#00FF00</color>
<color name="spring_green">#00FF7F</color>
<color name="cyan">#00FFFF</color>
<color name="azure">#007FFF</color>
<color name="blue">#0000FF</color>
<color name="violet">#7F00FF</color>
<color name="magenta">#FF00FF</color>
<array name="rainbow">
<item>@color/bright_pink</item>
<item>@color/red</item>
<item>@color/orange</item>
<item>@color/yellow</item>
<item>@color/chartreuse</item>
<item>@color/green</item>
<item>@color/spring_green</item>
<item>@color/cyan</item>
<item>@color/azure</item>
<item>@color/blue</item>
<item>@color/violet</item>
<item>@color/magenta</item>
</array>
</resources>
그런 다음 다음과 같이 액세스하십시오.
int[] rainbow = context.getResources().getIntArray(R.array.rainbow);
for (int i = 0; i < tileColumns; i++) {
paint.setColor(rainbow[i]);
// Do something with the paint.
}
이것이 array.xml에있는 경우 :
<resources>
<array name="colors">
<item>#ffffff</item>
<item>#000000</item>
</array>
</resources>
그러면 해당 배열의 색상 값이 제공됩니다.
TypedArray ta = context.getResources().obtainTypedArray(R.array.colors);
int[] colors = new int[ta.length()];
for (int i = 0; i < ta.length(); i++) {
colors[i] = ta.getColor(i, 0);
}
ta.recycle();
이것은 문서의 TypedArray 예제에서 확장됩니다. http://developer.android.com/guide/topics/resources/more-resources.html#TypedArray
도움이 되었기를 바랍니다.
colors.xml
<resources>
<string-array name="colors">
<item>#ff0000</item>
<item>#00ff00</item>
<item>#0000ff</item>
</string-array>
</resources>
활동 클래스의 코드.
String[] allColors = context.getResources().getStringArray(R.array.colors);
Color.parseColor(allColors[0]) // red
Color.parseColor(allColors[1]) // green
Color.parseColor(allColors[2]) // blue
댓글을 올릴 수 없으므로 새 답변으로 입력해야합니다. 색상 리소스 유형을 사용하는 Sky Kelsey wrt 디자인 선택에 전적으로 동의합니다. 그러나 액세스하는 제안 방법이 작동하지 않는 것으로 나타났습니다. 이것은 XML 배열을 사용하여 색상 목록을 쉽게 반복하고 다양한 (사용자 지정 페인트) 뷰에 색상을 적용하는 방법입니다.
먼저 arrays.xml의 배열 :
<array name="ingr_color_arr">
<item>@color/ingr_red1</item>
<item>@color/ingr_orange1</item>
<item>@color/ingr_yellow1</item>
<item>@color/ingr_green1</item>
<item>@color/ingr_blue1</item>
<item>@color/ingr_violet1</item>
<item>@color/ingr_red2</item>
<item>@color/ingr_orange2</item>
<item>@color/ingr_yellow2</item>
<item>@color/ingr_green2</item>
<item>@color/ingr_blue2</item>
<item>@color/ingr_violet2</item>
</array>
그런 다음 color.xml에서 :
<color name="ingr_red1">#FFCC0000</color>
<color name="ingr_orange1">#FFED5F21</color>
<color name="ingr_yellow1">#FFFAE300</color>
<color name="ingr_green1">#FF5B9C0A</color>
<color name="ingr_blue1">#FF0A0D9C</color>
<color name="ingr_violet1">#FF990A9C</color>
<color name="ingr_red2">#FFFFCCCC</color>
<color name="ingr_orange2">#FFFFEACC</color>
<color name="ingr_yellow2">#FFFFFECC</color>
<color name="ingr_green2">#FFC7F5C4</color>
<color name="ingr_blue2">#FFC4DAF4</color>
<color name="ingr_violet2">#FFE1C4F4</color>
그런 다음 사용하려면 :
TypedArray ta = res.obtainTypedArray(R.array.ingr_color_arr);
int colorToUse = ta.getResourceId(intGroupNum.intValue() - 1, R.color.recipe_detail_border);
paint.setColor(colorToUse);
여기서 핵심은 setColor (int)가 색상에 대한 리소스 ID를 예상하기 때문에 getResourceId 를 사용 하는 것입니다. getIntArray()
또는로 값을 가져 오려고 할 때 "Resource not found"오류가 발생했습니다 getColor()
.
가장 인기있는 대답은 효과가있을 수 있습니다. '색상 배열'디자인 선택을 더 선호했기 때문에 시도하지 않았습니다.
Kotlin에서는 훨씬 간단합니다.
val colors = resources.obtainTypedArray(R.array.colors).use { ta ->
IntArray(ta.length()) { ta.getColor(it, 0) }
}
Color.xml :
<string-array name="listcolors">
<item>#448AFF</item>
<item>#FFC107</item>
<item>#009688</item>
<item>#ff8000</item>
<item>#ffbf00</item>
<item>#0000ff</item>
<item>#936c6c</item>
<item>#7733ff</item>
<item>#7733ff</item>
<item>#ff8000</item>
<item>#448AFF</item>
<item>#0000ff</item>
</string-array>
activity.java file
Context context;
String[] colors = context.getResources().getStringArray(R.array.listcolors);
String bg_color = colors[i]; //i=1,2,3...
<color name="gblue">#4285F4</color>
<color name="ggreen">#34A853</color>
<color name="gyellow">#FBBC05</color>
<color name="gred">#EA4335</color>
<array name="google_colors">
<item>@color/gblue</item>
<item>@color/ggreen</item>
<item>@color/gyellow</item>
<item>@color/gred</item>
</array>
Use this in java/kotlin or style do not use in xml
'code' 카테고리의 다른 글
앱을 더욱 전문적으로 만드는 특징 / 기능? (0) | 2020.11.22 |
---|---|
C / C ++ 컴파일러 경고 : 모든 코드를 정리하여 제거하거나 그대로 두십니까? (0) | 2020.11.22 |
텍스트 상자에 정수만 허용하는 방법은 무엇입니까? (0) | 2020.11.22 |
빌드 경로가 불완전하여 프로젝트가 빌드되지 않았습니다. (0) | 2020.11.22 |
Windows DLL 버전을 덤프하는 명령 줄 도구? (0) | 2020.11.22 |