免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
java – 如何在android中的圖像視圖上添加引腳標(biāo)記

我正在進(jìn)行一個(gè)項(xiàng)目,我需要在圖像視圖上添加圖釘,如下圖所示.
我們?cè)趺茨苓@樣做

我使用成功創(chuàng)建了可縮放的圖像視圖

TouchImageview.java

 class TouchImageView extends ImageView {Matrix matrix = new Matrix();// We can be in one of these 3 statesstatic final int NONE = 0;static final int DRAG = 1;static final int ZOOM = 2;int mode = NONE;// Remember some things for zoomingPointF last = new PointF();PointF start = new PointF();float minScale = 1f;float maxScale = 3f;float[] m;float redundantXSpace, redundantYSpace;float width, height;static final int CLICK = 3;float saveScale = 1f;float right, bottom, origWidth, origHeight, bmWidth, bmHeight;ScaleGestureDetector mScaleDetector;Context context;@Overrideprotected void onDraw(Canvas canvas) {    super.onDraw(canvas);       }public TouchImageView(Context context) {    super(context);    super.setClickable(true);    this.context = context;    mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());    matrix.setTranslate(1f, 1f);    m = new float[9];    setImageMatrix(matrix);    setScaleType(ScaleType.MATRIX);    setOnTouchListener(new OnTouchListener() {        @Override        public boolean onTouch(View v, MotionEvent event) {            mScaleDetector.onTouchEvent(event);            Log.e("Deepak", "X"   event.getRawX());            Log.e("Deepak", "Y"   event.getRawY());            matrix.getValues(m);            float x = m[Matrix.MTRANS_X];            float y = m[Matrix.MTRANS_Y];            PointF curr = new PointF(event.getX(), event.getY());            switch (event.getAction()) {                case MotionEvent.ACTION_DOWN:                    last.set(event.getX(), event.getY());                    start.set(last);                    mode = DRAG;                    break;                case MotionEvent.ACTION_MOVE:                    if (mode == DRAG) {                        float deltaX = curr.x - last.x;                        float deltaY = curr.y - last.y;                        float scaleWidth = Math.round(origWidth * saveScale);                        float scaleHeight = Math.round(origHeight * saveScale);                        if (scaleWidth < width) {                            deltaX = 0;                            if (y   deltaY > 0)                                deltaY = -y;                            else if (y   deltaY < -bottom)                                deltaY = -(y   bottom);                         } else if (scaleHeight < height) {                            deltaY = 0;                            if (x   deltaX > 0)                                deltaX = -x;                            else if (x   deltaX < -right)                                deltaX = -(x   right);                        } else {                            if (x   deltaX > 0)                                deltaX = -x;                            else if (x   deltaX < -right)                                deltaX = -(x   right);                            if (y   deltaY > 0)                                deltaY = -y;                            else if (y   deltaY < -bottom)                                deltaY = -(y   bottom);                        }                        matrix.postTranslate(deltaX, deltaY);                        last.set(curr.x, curr.y);                    }                    break;                case MotionEvent.ACTION_UP:                    mode = NONE;                    int xDiff = (int) Math.abs(curr.x - start.x);                    int yDiff = (int) Math.abs(curr.y - start.y);                    if (xDiff < CLICK && yDiff < CLICK)                        performClick();                    break;                case MotionEvent.ACTION_POINTER_UP:                    mode = NONE;                    break;            }            setImageMatrix(matrix);            invalidate();            return true; // indicate event was handled        }    });}@Overridepublic void setImageBitmap(Bitmap bm) {     super.setImageBitmap(bm);    bmWidth = bm.getWidth();    bmHeight = bm.getHeight();}public void setMaxZoom(float x){    maxScale = x;}private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {    @Override    public boolean onScaleBegin(ScaleGestureDetector detector) {        mode = ZOOM;        return true;    }    @Override    public boolean onScale(ScaleGestureDetector detector) {        float mScaleFactor = (float)Math.min(Math.max(.95f, detector.getScaleFactor()), 1.05);        float origScale = saveScale;        saveScale *= mScaleFactor;        if (saveScale > maxScale) {            saveScale = maxScale;            mScaleFactor = maxScale / origScale;        } else if (saveScale < minScale) {            saveScale = minScale;            mScaleFactor = minScale / origScale;        }        right = width * saveScale - width - (2 * redundantXSpace * saveScale);        bottom = height * saveScale - height - (2 * redundantYSpace * saveScale);        if (origWidth * saveScale <= width || origHeight * saveScale <= height) {            matrix.postScale(mScaleFactor, mScaleFactor, width / 2, height / 2);            if (mScaleFactor < 1) {                matrix.getValues(m);                float x = m[Matrix.MTRANS_X];                float y = m[Matrix.MTRANS_Y];                if (mScaleFactor < 1) {                    if (Math.round(origWidth * saveScale) < width) {                        if (y < -bottom)                            matrix.postTranslate(0, -(y   bottom));                        else if (y > 0)                            matrix.postTranslate(0, -y);                    } else {                        if (x < -right)                             matrix.postTranslate(-(x   right), 0);                        else if (x > 0)                             matrix.postTranslate(-x, 0);                    }                }            }        } else {            matrix.postScale(mScaleFactor, mScaleFactor, detector.getFocusX(), detector.getFocusY());            matrix.getValues(m);            float x = m[Matrix.MTRANS_X];            float y = m[Matrix.MTRANS_Y];            if (mScaleFactor < 1) {                if (x < -right)                     matrix.postTranslate(-(x   right), 0);                else if (x > 0)                     matrix.postTranslate(-x, 0);                if (y < -bottom)                    matrix.postTranslate(0, -(y   bottom));                else if (y > 0)                    matrix.postTranslate(0, -y);            }        }        return true;    }}@Overrideprotected void onMeasure (int widthMeasureSpec, int heightMeasureSpec){    super.onMeasure(widthMeasureSpec, heightMeasureSpec);    width = MeasureSpec.getSize(widthMeasureSpec);    height = MeasureSpec.getSize(heightMeasureSpec);    //Fit to screen.    float scale;    float scaleX =  (float)width / (float)bmWidth;    float scaleY = (float)height / (float)bmHeight;    scale = Math.min(scaleX, scaleY);    matrix.setScale(scale, scale);    setImageMatrix(matrix);    saveScale = 1f;    // Center the image    redundantYSpace = (float)height - (scale * (float)bmHeight) ;    redundantXSpace = (float)width - (scale * (float)bmWidth);    redundantYSpace /= (float)2;    redundantXSpace /= (float)2;    matrix.postTranslate(redundantXSpace, redundantYSpace);    origWidth = width - 2 * redundantXSpace;    origHeight = height - 2 * redundantYSpace;    right = width * saveScale - width - (2 * redundantXSpace * saveScale);    bottom = height * saveScale - height - (2 * redundantYSpace * saveScale);    setImageMatrix(matrix);}}

現(xiàn)在我需要在上面添加標(biāo)記.
任何幫助.

解決方法:

我在這里找到了答案https://github.com/catchthecows/AndroidImageMap

在Android視圖中實(shí)現(xiàn)HTML地圖的元素:

>在布局中支持圖像作為可繪制或位圖
>允許xml中的區(qū)域標(biāo)簽列表
>允許使用剪切和粘貼HTML區(qū)域標(biāo)簽到資源xml(即,獲取HTML地圖的能力 – 和圖像,并使用最少的編輯使用它)
>如果圖像大于設(shè)備屏幕,則支持平移
>支持雙指縮放
>在點(diǎn)擊區(qū)域時(shí)支持回調(diào).
>支持將注釋顯示為氣泡文本,并在點(diǎn)擊氣泡時(shí)提供回調(diào)

來(lái)源:https://www.icode9.com/content-1-485101.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android中Canvas繪圖基礎(chǔ)詳解(附源碼下載)
Android中圖像變換Matrix的原理、代碼驗(yàn)證和應(yīng)用(二)
在Android中實(shí)現(xiàn)圖片縮放和旋轉(zhuǎn)
Java自測(cè)題編寫代碼:CS455 Random Walk
python開(kāi)發(fā)的小球完全彈性碰撞游戲代碼_python_腳本之家
監(jiān)聽(tīng)Mac OS X的全局鼠標(biāo)事件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服