gpt4 book ai didi

java - 如何在 ImageView Android 上添加标记/图钉?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:30 25 4
gpt4 key购买 nike

我想问一下如何在 imageView 上实现或添加标记。我使用 svglib 渲染了 SVG 并使用了 customImageView,这样我就可以缩放和平移图像。

这是我如何使用我的 customImageView 的代码

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
SVG svg;
switch (mNum) {

case 1:
svg = SVGParser.getSVGFromResource(getResources(), R.raw.t1);
break;
case 2:
svg = SVGParser.getSVGFromResource(getResources(), R.raw.t2);
break;
case 3:
svg = SVGParser.getSVGFromResource(getResources(), R.raw.t3);
break;
case 4:
svg = SVGParser.getSVGFromResource(getResources(), R.raw.t4);
break;
default:
svg = SVGParser.getSVGFromResource(getResources(),
R.raw.android);

}

View v = inflater.inflate(R.layout.hello_world, container, false);
View tv = v.findViewById(R.id.text);
imageView = (GestureImageView) v.findViewById(R.id.imageView1);
imageView.setStrict(false);
imageView.setStartingScale(lastScale);
// if(lastXPosition!=0 && lastYPosition!=0)
imageView.setStartingPosition(lastXPosition, lastYPosition);
// Log.i("tag",
// "lastXPosition" + lastXPosition);
// Log.i("tag",
// "lastYPosition" + lastYPosition);
// Log.i("tag",
// "lastScale" + lastScale);
// imageView.setRotation(45);
// imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
if (Build.VERSION.SDK_INT > 15)
imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
imageView.setImageDrawable(svg.createPictureDrawable());
((TextView) tv).setText("Floor number: " + mNum);
imageView.setBackgroundColor(Color.WHITE);
// tv.setBackgroundDrawable(getResources().getDrawable(
// android.R.drawable.gallery_thumb));
// imageView.setScaleType(ScaleType.CENTER);
// ((GestureImageView)imageView).setScale(x);
return v;
}

现在我想添加一个 pin 就像下面的图片一样......

My problem
(来源:modality.com)

但我的问题是,当我平移我添加的标记时,它没有与图像 SVG 绑定(bind),因此在平移时留在某个位置......

这是我的代码...注意:还没有最终确定...我仍在寻找一种方法来实现这一点,我正在使用放大的 ImageView 作为 map ...

@Override
protected void onDraw(Canvas canvas) {

if (layout) {
if (drawable != null && !isRecycled()) {
canvas.save();

float adjustedScale = scale * scaleAdjust;

canvas.translate(x, y);

if (rotation != 0.0f) {
canvas.rotate(rotation);
}

if (adjustedScale != 1.0f) {
canvas.scale(adjustedScale, adjustedScale);
}

drawable.draw(canvas);

canvas.restore();
}

if (drawLock.availablePermits() <= 0) {
drawLock.release();
}
}

// ---add the marker---
Bitmap marker = BitmapFactory.decodeResource(getResources(),
R.drawable.search_marker_icon);
canvas.drawBitmap(marker, 40, 40, null);
Paint mPaint = new Paint();
mPaint.setColor(Color.RED);
canvas.drawCircle(60, 60, 5, mPaint);
super.onDraw(canvas);
}

谢谢....我是android的新手:)希望你能帮助我....

My problem

最佳答案

这是一个很好的显示图像的库,它支持缩放/平移和在图像上添加图钉 https://github.com/davemorrissey/subsampling-scale-image-view

关于java - 如何在 ImageView Android 上添加标记/图钉?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13679189/

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