Android 如何使用图像标记创建自定义可拉伸管脚

Android 如何使用图像标记创建自定义可拉伸管脚,android,canvas,bitmap,drawable,layout-inflater,Android,Canvas,Bitmap,Drawable,Layout Inflater,我正在尝试创建与以下内容相同的自定义标记图像: 我已经创建了一个布局,其中包含背景和CircleImageView: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android

我正在尝试创建与以下内容相同的自定义标记图像:

我已经创建了一个布局,其中包含背景和CircleImageView:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/user_marker_layout"
    android:layout_width="50dp"
    android:background="@drawable/ic_map_person_circle"
    android:layout_height="50dp">

        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/user_marker_icon"
            android:layout_centerHorizontal="true"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginTop="3dp"
            app:civ_border_color="#fff"
            android:layout_alignParentTop="true"

            android:contentDescription="@null"
            android:src="@drawable/ic_pin_user" />
             />
</RelativeLayout>

/>
其中,可绘制的ic\u地图\u人\u圈为:

按代码:

Glide.with(mContext).load(imageUri)
.placeholder(R.drawable.ic_default_user_image)
.error(R.drawable.ic_default_user_image)
.priority(Priority.HIGH)
.into(new SimpleTarget<GlideDrawable>() {
    @Override
    public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
        marker.setIcon(BitmapDescriptorFactory.fromBitmap(BitmapUtil.getMarkerBitmapFromView(resource,mContext)));
    }
});



public static Bitmap getMarkerBitmapFromView(Drawable drawable, Context context) {
    View customMarkerView =
            ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.circle_image_on_map, null);


    CircleImageView markerImage = (CircleImageView) customMarkerView.findViewById(R.id.user_marker_icon);
    customMarkerView.setBackground(context.getResources().getDrawable(R.drawable.ic_map_person_circle));
    markerImage.setImageDrawable(drawable);

    customMarkerView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    customMarkerView.layout(0, 0, customMarkerView.getMeasuredWidth(), customMarkerView.getMeasuredHeight());
    customMarkerView.buildDrawingCache();

    Bitmap returnedBitmap = Bitmap.createBitmap(customMarkerView.getMeasuredWidth(), customMarkerView.getMeasuredHeight(),
            Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(returnedBitmap);


    customMarkerView.draw(canvas);
    return returnedBitmap;

}
Glide.with(mContext.load)(imageUri)
.placeholder(R.drawable.ic\u默认\u用户\u图像)
.错误(R.drawable.ic\u默认\u用户\u图像)
.优先级(优先级高)
.into(新的SimpleTarget(){
@凌驾

public void onResourceReady(GlideDrawable资源,GlideAnimation我在将背景图像从外部布局移动到CircleImageView时解决了这个问题:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/user_marker_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

        <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/user_marker_icon"
            android:layout_centerHorizontal="true"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@drawable/ic_map_person_circle"
            android:paddingLeft="12dp"
            android:paddingRight="12dp"
            android:paddingBottom="12dp"
            app:civ_border_color="#fff"
            android:layout_alignParentTop="true"

            android:contentDescription="@null"
            android:src="@drawable/ic_pin_user" />
             />
</RelativeLayout>

/>