如何在Android Studio中将图像添加到位图?

如何在Android Studio中将图像添加到位图?,android,bitmap,Android,Bitmap,我想能够添加一个“兴趣点”到位图上,类似于谷歌地图的pin,可以点击它来显示信息 我只需要知道如何将pin添加到空间中,并将其保持在位图的正确点上(我可以在位图上平移和缩放) 对不起,我对Android Studio还不太熟悉,请提前感谢!) 您可以在位图顶部绘制一个对象,并实现一个触摸回调,以验证您是否确实按下了标记。 下面是一个简单的例子: <com.myproject.RedImageView android:id="@+id/imageView" android:l

我想能够添加一个“兴趣点”到位图上,类似于谷歌地图的pin,可以点击它来显示信息

我只需要知道如何将pin添加到空间中,并将其保持在位图的正确点上(我可以在位图上平移和缩放)


对不起,我对Android Studio还不太熟悉,请提前感谢!)

您可以在位图顶部绘制一个对象,并实现一个触摸回调,以验证您是否确实按下了标记。 下面是一个简单的例子:

<com.myproject.RedImageView
    android:id="@+id/imageView"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:layout_centerHorizontal="true"
    android:layout_centerInParent="true"
    android:layout_centerVertical="true"
    android:background="@android:color/holo_red_dark" />

package com.myproject;

public class RedImageView extends View {

    private Paint mPaint;
    private Rect mRect;

    public RedImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    //Draw a small white rectangle on top of our red ImageView
    private void init() {
        mPaint = new Paint();
        mPaint.setColor(Color.WHITE);

        mRect = new Rect(20, 20, 120, 120);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        canvas.drawRect(mRect, mPaint);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        //Simple touch gesture has started
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            int x = (int) event.getX();
            int y = (int) event.getY();
            //Match touch coordinates vs "Point of Interest" aka small white rectangle
            if (mRect.contains(x, y)) {
                Snackbar.make(this, "Clicked white", Snackbar.LENGTH_SHORT).show();
            }
        }

        return super.onTouchEvent(event);
    }
}

包com.myproject;
公共类RedImageView扩展了视图{
私人油漆;
私人直肠;
公共重新图像视图(上下文、属性集属性){
超级(上下文,attrs);
init();
}
//在红色图像视图的顶部绘制一个白色的小矩形
私有void init(){
mPaint=新油漆();
mPaint.setColor(Color.WHITE);
mRect=新的Rect(20,20,120,120);
}
@凌驾
受保护的void onDraw(画布){
super.onDraw(帆布);
canvas.drawRect(mRect,mPaint);
}
@凌驾
公共布尔onTouchEvent(运动事件){
//简单的触摸手势已经开始
if(event.getAction()==MotionEvent.ACTION\u向下){
int x=(int)event.getX();
int y=(int)event.getY();
//匹配触摸坐标与“兴趣点”又名白色小矩形
if(mRect.包含(x,y)){
Snackbar.make(这是“点击的白色”,Snackbar.LENGTH_SHORT).show();
}
}
返回super.onTouchEvent(事件);
}
}

我不建议为此修改位图。创建感兴趣点对象的列表并存储它们的位置。然后在地图图像的顶部绘制它们。无需修改位图,除非您希望用户能够从其他应用程序(如图像库)访问它。我可能需要显示一个大的选项卡,因为可能有很多关于这些点的信息,他们可能需要编辑/删除它们。我已经用过这段代码了,它有一些有用的东西,但我还是什么都做不到。你知道在位图(不是在位图中,像叠加一样)的顶部添加一个可绘制文件夹中的图像吗?该位图保持在位图的坐标上(因为我可以平移和缩放位图),并对触摸做出响应?