Поворот внутри элемента списка слоев обрезается

1

У меня проблема с 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>

Но когда я запускаю его, результат обрезается сверху и снизу, как показано на следующем изображении:

Изображение 174551

У меня есть еще одно сомнение: если я поместил идентификатор в <item>, как его получить на моем представлении, чтобы я мог изменить растровое изображение в коде? документация * говорит, что мне нужно использовать View.findViewByID, но я хочу получить BitmapDrawable, и я не могу использовать View для Drawable!

Я также пробовал кодировать одно и то же в CustomView с Canvas.drawBitmap, но это выглядит очень уродливо, если кто-то может указать на хорошее решение, используя это, я тоже оценил бы.

Заранее спасибо

Теги:

1 ответ

0
Лучший ответ

Что вы вкладываете в этот список слоев? Что 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);
  • 0
    Спасибо за ваш ответ, но я прекратил попытки использовать layer-list и реализовал ту же визуализацию в пользовательском представлении, рисуя растровые изображения прямо на холсте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню