gpt4 book ai didi

android - 在图层列表项目内旋转正在裁剪

转载 作者:行者123 更新时间:2023-11-30 04:39:42 25 4
gpt4 key购买 nike

我在 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>

但是当我运行它时,结果在顶部和底部被裁剪,如下图所示:

cropped_image

我还有一个疑问:如果我在 <item> 上加上一个 ID如何在我的 View 中检索它以便我可以更改代码中的位图? documentation * 说我必须使用 View.findViewByID,但我想获取 BitmapDrawable,但我无法将 View 转换为 Drawable!

我也尝试在 CustomView 上使用 Canvas.drawBitmap 编写相同的代码,但它看起来非常难看,如果有人可以指出一个好的解决方案,我也将不胜感激。

提前致谢

最佳答案

您将图层列表放入什么?将它用作可绘制对象的 XML 是什么?您是否尝试过向包含可绘制图层的 View 添加一些顶部和底部填充?


至于从代码访问位图,您需要先获取 LayerDrawable,然后使用其 getDrawable 或 findDrawableByLayerId 方法。

例如,如果您使用位图项目层作为 ID 为“container”的 View 的背景,您可以这样做:

// 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's 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);

关于android - 在图层列表项目内旋转正在裁剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6207566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com