2016-07-08 21 views
0

Ich entwickle eine Anwendung und Anforderungen sind wie folgt.Wie Zeichnen Kreis auf Zoom in der Lage und Bildlauf Bildansicht Android?

Bild mit Pinch Zoom und Pan anzeigen.

Dazu verwende ich TouchImageview.java von here

Und es funktioniert wie erwartet.

Zeichnen Sie einen festen Kreis auf Bild.

Dies funktioniert auch.

public class NavigationViewZoom extends TouchImageView { 
    private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); 

    @Override 
    public void setImageBitmap(Bitmap bm) { 
     super.setImageBitmap(bm); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.drawCircle(300, 120, 50, mPaint); 
    } 

    public NavigationViewZoom(Context c) { 
     super(c); 
     init(); 
    } 

    public NavigationViewZoom(Context c, AttributeSet attrs) { 
     super(c, attrs); 
     setDrawingCacheEnabled(true); 
     init(); 
    } 

    private void init() { 

     mPaint.setColor(Color.RED); 
     mPaint.setStyle(Paint.Style.FILL); 

    } 
} 

Problem:

Das Problem ist jetzt, wenn Zoom in/out Bild nach auf Leinwand füllter Kreis zeichnen die Kreisposition verwaltet wird nicht.

Zum Beispiel Ich zeichne festen Kreis auf Position x = 100, y = 100 nach dem Zoomen des Bildes sollte der Kreis auf der gleichen Position sein. So erhalten Sie die relative x, y-Position auf gezoomtem Bild.

+0

einige Code wird geschätzt .. !! –

+0

Erstellen Sie eine Klasse, die 'BitmapDrawable' erweitert und ihre' draw'-Methode überschreibt – pskink

+0

Ich kann einen Kreis zeichnen, aber beim Zoomen sollte sich der Bildkreis nicht bewegen. –

Antwort

0

Versuchen Sie mit dieser library. In Demo-App wird eine Funktion angezeigt, die scheint, was Sie wollen.

CircleView Klasse in der Bibliothek könnte nützlich sein.