2012-09-05 12 views
10

Ho avuto successo nell'implementare un pizzico di zoom in/out e trascinare/rilasciare la funzionalità nelle immagini sulla tela.modifica la forma dell'immagine in Android

Ora quello che voglio è ridimensionamento, che immagini come qui sotto link che basa su iPhone App enter image description here

How to change shape of an image using iPhone SDK?

Così come posso raggiungere questo tipo di funzionalità in Android?

+1

Non sono sicuro del motivo per cui questo valore viene aumentato a +4 entro un minuto dalla pubblicazione. Può un convogliatore spiegare cosa rende questa domanda così straordinaria? Ad ogni modo, cosa hai provato ancora? –

+1

http://code.google.com/p/android-multitouch-controller/source/browse/demo/MTPhotoSortr/src/org/metalev/multitouch/photosortr/PhotoSorterView.java?r=3ef1fdcbebe4f016a03c4d956af4ecbf850a925a Utilizzando questo link i sono riusciti a pizzicare con successo le immagini dentro e fuori nella tela. –

+0

@xitij sto anche cercando questo tipo di probs ..... se vado in giro ... ti informerò sicuramente ..... –

risposta

0

Esistono due opzioni, entrambe relative a una vista personalizzata. Il primo è creare una visualizzazione personalizzata che riempia la tua "tela". Puoi tenere traccia di 8 cerchi blu e 1 cerchi verdi nella vista come oggetti Rect. Sostituisci onTouchEvent(MotionEvent) e poi controlla se gli eventi di movimento sono in uno dei tuoi controlli e aggiornali di conseguenza (sto semplificando un po 'le cose qui :)). Dal tuo onTouchEvent chiameresti invalidate(). Sei onDraw(Canvas) quindi puoi gestire il disegno dei controlli e aggiornare l'immagine in base a come sono stati modificati i controlli dall'ultima chiamata a onDraw.

L'altra opzione è di fare qualcosa di simile, ma con una vista che incapsula solo il cerchio e i controlli, il che significa che spostare la vista intorno richiederebbe un contenitore che lascerà che la vista cambi i suoi parametri di layout. In questo modo, il tuo metodo onTouchEvent dovrebbe attivare un invalidato con quella vista di layout, in quanto sarebbe necessario ricalcolare la dimensione e la posizione della vista. Questo sarebbe sicuramente più difficile, ma a seconda di ciò che stai cercando di ottenere lavorando con le singole visualizzazioni potrebbe essere meglio che mantenere le rappresentazioni delle tue cerchie nel codice in un'unica vista.

1

In sostanza è necessario invalidare l'immagine e ri-disegnare sulla tela dall'inizio ::

img=(ImageView)findViewById(R.id.yourimageidfromxml); 

img.onTouchEvent(MotionEvent me) 
{ 
    int X=me.getX(); 
    int Y=me.getY(); 
    img.invalidate(); 
    img.repaint(X,Y); 

} 

void paint(int X,int Y) 
{ 
    img.setWidth(X); 
    img.setHeight(Y); 
} 

Scaling dell'immagine trasformerà utilizzando ridipingere su tela dall'inizio

0

Il ridimensionamento dell'immagine può essere raggiunto utilizzando un semplice ImageView con scaleType "fitXY".

È necessario aggiungere le maniglie di ridimensionamento blu da soli.

Cambiare la rotazione dell'immagine (maniglia verde) può essere realizzato utilizzando:

public static Bitmap rotate(Bitmap src, float degree) { 
    // create new matrix 
    Matrix matrix = new Matrix(); 
    // setup rotation degree 
    matrix.postRotate(degree); 

    // return new bitmap rotated using matrix 
    return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true); 
} 

Fonte

: http://xjaphx.wordpress.com/2011/06/22/image-processing-rotate-image-on-the-fly/

Vedere http://xjaphx.wordpress.com/learning/tutorials/ per ulteriori esempi di Image Processing Android.

1

Se con ridimensionamento si sta facendo riferimento a "allungare" la bitmap sul piano verticale e orizzontale, è sufficiente modificare il rettangolo in cui viene disegnata la forma (ad esempio ovale).

Ad esempio:

Questa è la forma originale di un ovale:

canvas.drawOval(new Rect(0,0,100,100), bluePaint); 

Questo è lo stesso ovale, appena allungato (ridimensionato) sul piano orizzontale:

canvas.drawOval(new Rect(0,0,200,100), bluePaint); 

Spero che aiuti.

Problemi correlati