У меня проблема с layer- на Android. Я хочу сделать просто кучу изображений. Я могу добиться этого с помощью следующего кода:
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:pivotX="50%" android:pivotY="50%"
android:fromDegrees="0" android:toDegrees="0">
<bitmap
android:src="@drawable/teste1"
android:gravity="center" />
</rotate>
</item>
<item>
<rotate
android:pivotX="50%" android:pivotY="50%"
android:fromDegrees="-9" android:toDegrees="-9">
<bitmap
android:src="@drawable/teste3"
android:gravity="center" />
</rotate>
</item>
<item>
<rotate
android:pivotX="50%" android:pivotY="50%"
android:fromDegrees="9" android:toDegrees="9">
<bitmap
android:src="@drawable/teste2"
android:gravity="center" />
</rotate>
</item>
</layer-list>
Но когда я запускаю его, результат обрезается сверху и снизу, как показано на следующем изображении:
У меня есть еще одно сомнение: если я поместил идентификатор в <item>
, как его получить на моем представлении, чтобы я мог изменить растровое изображение в коде? документация * говорит, что мне нужно использовать View.findViewByID, но я хочу получить BitmapDrawable, и я не могу использовать View для Drawable!
Я также пробовал кодировать одно и то же в CustomView с Canvas.drawBitmap, но это выглядит очень уродливо, если кто-то может указать на хорошее решение, используя это, я тоже оценил бы.
Заранее спасибо
Что вы вкладываете в этот список слоев? Что XML, который использует его как drawable? Вы пытались добавить верхнее и нижнее дополнение к представлению, содержащему ваш слой?
Что касается доступа к растровому изображению из кода, вам нужно сначала получить LayerDrawable, а затем использовать его методы getDrawable или findDrawableByLayerId.
Например, если вы используете слой растровых элементов в качестве фона представления, идентификатор которого является "контейнером", вы можете сделать это:
// get the layer list being used as the background of 'container'
View view = findViewById(R.id.container);
LayerDrawable layer = (LayerDrawable)view.getBackground();
// get the first layer BitmapDrawable by index
BitmapDrawable bg = (BitmapDrawable)layer.getDrawable(0);
// get the BitmapDrawable of the layer whose id is 'teste2'
BitmapDrawable bgTeste2 = (BitmapDrawable)layer.findDrawableByLayerId(R.id.teste2);
// do whatever you want with the drawable
bg.setAlpha(60);