mapview Java,ANDROID - MapView

有人可以帮我一些关于mapview我试图 Build 的东西 . 我有一个渲染器,它采用画布并在其中绘制位图 . 我创建了一个视图,并在构造函数中创建:

bitmap = Bitmap.createBitmap(windowWidth, windowHeight, Bitmap.Config.ARGB_8888);

canvas = new Canvas(bitmap);

drawable = new BitmapDrawable(bitmap);

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

this.Render();

在onDraw方法中我有这个:

super.onDraw(canvas);

canvas.save();

canvas.translate(mPosX, mPosY);

canvas.scale(mScaleFactor, mScaleFactor);

drawable.draw(canvas);

canvas.restore();

现在我想实现平移和缩放(目前即时工作没有保存的瓷砖)这是我的onTouch:

mScaleDetector.onTouchEvent(EV);

final int action = ev.getAction();

switch (action & MotionEvent.ACTION_MASK) {

case MotionEvent.ACTION_DOWN: {

this.hasPanned = false;

final float x = ev.getX();

final float y = ev.getY();

mLastTouchX = x;

mLastTouchY = y;

mActivePointerId = ev.getPointerId(0);

break;

}

case MotionEvent.ACTION_MOVE: {

final int pointerIndex = ev.findPointerIndex(mActivePointerId);

final float x = ev.getX(pointerIndex);

final float y = ev.getY(pointerIndex);

if (!mScaleDetector.isInProgress()) {

final float dx = x - mLastTouchX;

final float dy = y - mLastTouchY;

mPosX += dx;

mPosY += dy;

invalidate();

}

mLastTouchX = x;

mLastTouchY = y;

break;

}

case MotionEvent.ACTION_UP: {

mActivePointerId = INVALID_POINTER_ID;

if (this.mDownTouchX != this.mLastTouchX && this.mDownTouchY != mLastTouchY)

this.hasPanned = true;

break;

}

case MotionEvent.ACTION_CANCEL: {

mActivePointerId = INVALID_POINTER_ID;

break;

}

case MotionEvent.ACTION_POINTER_UP: {

final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)

>> MotionEvent.ACTION_POINTER_INDEX_SHIFT;

final int pointerId = ev.getPointerId(pointerIndex);

if (pointerId == mActivePointerId) {

final int newPointerIndex = pointerIndex == 0 ? 1 : 0;

mLastTouchX = ev.getX(newPointerIndex);

mLastTouchY = ev.getY(newPointerIndex);

mActivePointerId = ev.getPointerId(newPointerIndex);

}

break;

}

}

return true;

这是我想要的和我遇到的问题:

当我平移时我想计算距离(以像素为单位),以便我可以告诉我的渲染器何时再次渲染图像 . 这是如何实现的?通过记住ACTION_DOWN上的坐标并与ACTION_UP中的新坐标进行比较?

当平移完成(并重新渲染图像)时,我想将画布(图像)设置回原始位置 . 目前它保持paned(因为canvas.translate?)

如何处理缩放手势?用我的手指进行缩小时,使用此代码,图像朝向左上角"dragged"

我是android(和java)的新手,所以任何帮助都是精确的 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值