Я наткнулся на код
Пример HelloGallery
ImageAdapter.java - http://developer.android.com/resources/tutorials/views/hello-gallery.html
TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
mGalleryItemBackground = a.getResourceId(
R.styleable.HelloGallery_android_galleryItemBackground, 0);
a.recycle();
attrs.xml - http://developer.android.com/resources/tutorials/views/hello-gallery.html
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="HelloGallery">
<attr name="android:galleryItemBackground" />
</declare-styleable>
</resources>
а также код:
Пример игры Snake
TileView.java - http://developer.android.com/resources/samples/Snake/src/com/example/android/snake/TileView.html
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TileView);
mTileSize = a.getInt(R.styleable.TileView_tileSize, 12);
a.recycle();
attrs.html - http://developer.android.com/resources/samples/Snake/res/values/attrs.html
<resources>
<declare-styleable name="TileView">
<attr name="tileSize" format="integer" />
</declare-styleable>
</resources>
- Могу ли я узнать, почему им нужно получить целочисленное значение из XML? Почему бы им просто не закодировать
mGalleryItemBackground = 0;
иmTileSize = 12;
? Я предполагаю, что они хотят что-то изменить, не касаясь кода Java. Но я не вижу, чтобы какое-либо значение указывалось явно в самом XML файле. Пример кода для демонстрации цели TypedArray и context.obtainStyledAttributes очень полезен. - Оба пытаются прочитать целое число. Почему в одном из примеров используется метод
getResourceId
, другой использует методgetInt
? - Я ссылаюсь на TypedArray JavaDoc, но я не могу понять, что делает
recycle
?
Вернуть ранее извлеченный StyledAttributes, для последующего повторного использования.