gpt4 book ai didi

android - 包含两个图像的 XML Drawable

转载 作者:行者123 更新时间:2023-11-29 21:38:44 25 4
gpt4 key购买 nike

我正在尝试创建一个 XML Drawable,我将使用它来代替 OSMDroid 中的默认标记。
最后应该是这样的:

custom marker

黑色部分将在创建标记时加载,因为每个标记在那里都有不同的图像。 (如果重要的话,这些将从数据库加载)

我尝试创建一个 XML Drawable,它有点可以工作,但黑色部分似乎被缩放以适合图像,因此使标记只是一个黑色的大方 block 。 (没有黑色部分它工作正常)

我当前的 XML:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:drawable="@drawable/marker"/> // main

<item android:drawable="@drawable/markerfill" /> // black part

</layer-list>

我尝试对第二个项目使用秤,但当我查看秤时,看起来我不能为此使用秤。

我想要的:
我将黑框加载到“主要”部分,必要时调整它的大小(同时保持比例)并从 Java 代码更改它。我将为 OSMDroid 使用此标记。

最好的方法是什么?

最佳答案

What I want: I load the black box into the "main" part, resize it if necessary (while keeping the proportions) and change it from Java-Code. I will be using this marker for OSMDroid.

如果第一层图像在使用时不会调整大小/缩放(我不知道 OSMDroid 如何管理该标记),那么您可以使用 LayerDrawable 的当前方法并“放置”动态图像 LayerDrawable.setLayerInset() :

public Drawable makeBasicMarker(Bitmap bitmap) {
Drawable[] layers = new Drawable[2];
layers[0] = new BitmapDrawable(getResources(),
BitmapFactory.decodeResource(getResources(), R.drawable.marker));
layers[1] = new BitmapDrawable(getResources(), bitmap);
LayerDrawable ld = new LayerDrawable(layers);
ld.setLayerInset(1, xx, xx, xx, xx); // xx would be the values needed so bitmap ends in the upper part of the image
return ld;
}

如果图像被缩放,那么您需要制作自己的 Drawable 并自己绘制适当放置的部分。

关于android - 包含两个图像的 XML Drawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17694285/

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