Italian Visualizzare foto

coslad

Well-Known Member
Licensed User
Longtime User
Salve a tutti,
Secondo voi quale e' il modo migliore per visualizzare una foto con tutte le funzioni di scoll e zoom.
Si potrebbe usare il visualizzatore di sistema usando un intent tipo questo:

B4X:
Dim*iIntent*As*Intent*
iIntent.Initialize(iIntent.ACTION_VIEW,*"<PATH-TO-THE-PICTURE>")

Intent.SetType("image/jpeg")

StartActivity(iIntent)

Solo che vorrei l'immagine all'interno di una zona limitata del mio layout.
Ho pensato anche ad usare il webview.
Avete qualche consiglio?
Grazie
 

coslad

Well-Known Member
Licensed User
Longtime User
Grazie Dominex, passata l'influenza la proverò, tu cosa mi consigli? Usare la classe o la libreria?
Grazie ancora

Inviato dal mio H9500 con Tapatalk 2
 

Dominex

Active Member
Licensed User
Longtime User
La classe e la libreria sono chiaramente identiche come funzionamento, io ti consiglio la Liberia perché eviti di avere sempre la classe nelle tutte app. Io uso la libreria per i miei lavori, inoltre aggiornando la sola libreria aggiornerai contemporaneamente tutti i tuoi progetti, con la classe devi farlo per ognuna di loro.

Buona guarigione.

Inviato dal mio Nexus 7 con Tapatalk 2
 

coslad

Well-Known Member
Licensed User
Longtime User
Grazie per aver condiviso il tuo lavoro e grazie per la risposta

Inviato dal mio H9500 con Tapatalk 2
 

coslad

Well-Known Member
Licensed User
Longtime User
Ho inserito la tua libreria nell'applicazione, vorrei pero' che la view non uscisse fuori dal panel , intendo che dopo che zummo e sposto la view a destra/sinistra , vorrei che lo shift si fermasse con il bordo della view che conincide con il bordo del panel .
E' possibile ?
 

coslad

Well-Known Member
Licensed User
Longtime User
Dovrebbe funzionare cosi' :

Se l'immagine (zoommata) e' piu grande del parent (sia esso un panel o un activity) allora durante la traslazione bisogna dargli i limiti dei bordi del parent stesso.
 

Dominex

Active Member
Licensed User
Longtime User
Dovrebbe funzionare cosi' :

Se l'immagine (zoommata) e' piu grande del parent (sia esso un panel o un activity) allora durante la traslazione bisogna dargli i limiti dei bordi del parent stesso.
Ho fatto la modifica, provala a fondo così mi dici se va bene.

Fai attenzione perchè il comando Initialize ora richiede anche l'inserimento del modulo (in pratica devi sono inserire il comando "Me"). Questa cosa non c'entra nulla con la modifica dei bordi, era semplicemente in programma, serve a far funzionare la classe anche con Activity secondarie.

Per impostare i limiti metti a True il metodo SetLimitBorder come nell'esempio.
 

Attachments

  • PinchZoomAndMove_1.42.zip
    70 KB · Views: 305
Last edited:

coslad

Well-Known Member
Licensed User
Longtime User
Ciao Dominex

Ho provato la modifica , ma non era quello che intendevo , cerco di spiegarmi meglio.

Devi vedere il funzionamento della classe in un panel e non nell'activity , questo aiuta a capire .

Se piazzi al centro dello schermo un panel con dentro una view, con la modifica attuale la view al massimo diventa quanto il panel , ma e' esattamente l'opposto che serve , infatti se quella view è una foto e devo zoommarla , per forze di cose la view diventerà piu' grande del panel .
Ora in queste condizioni se shifto la view a sinistra , questa andra' a sinistra senza controllo scoprendo sulla destra il fondo del panel , invece nella galleria di android se provi a zoomare una foto e a spostarla , ad un certo punto non potrai piu' spostarla .

Ti allego la foto di come e' con un immagine 1:1

4rrlox.png


Qui e' come e' con la classe attuale mentre zoommi e sposti l'immagine

o09yft.png


E' qui invece e' come vorrei che sia,dopo aver zoommato e spostato l'immagine a sinistra, con il bordo destro dell'immagine che non si sposta dal bordo destro del panel

15xv3h0.png


Ciao
 

coslad

Well-Known Member
Licensed User
Longtime User
Penso che l'ideale sarebbe che l'immagine rimpicciolita dovrebbe diventare al massimo quanto il panel.
O comunque si puo' impostare il valore di zoom min a 1 cosi' che si impedisca il rimpicciolimento.

Potresti far impostare un flag tipo setphotoframe(true) cosi' che la classe si puo' comportare in modo libero o in stile photoframe .

Come riferimento puoi prendere la galleria di android.
Li le foto al minimo sono quanto lo schermo ed al massimo non sbordano.

Ciao
 

Dominex

Active Member
Licensed User
Longtime User
Prova ora. Ti ho allegato intanto solo la classe.

Al momento se un'immagine è più piccola del parent verrà ingrandita alla dimensione del parent, chiaramente vale per la più piccola delle dimensioni tra larghezza e altezza.

Sia muovendo l'immagine che zoommandola non verrà comunque spostata oltre i bordi del parent, in pratica non vedrai mai quello che c'è sotto per intenderci.

Il metodo per impostare questa funzione è SetLimitArea(True), ho lasciato anche quello precedente SetLimitBorder() perché può essere comunque utile.

Fammi sapere.
 

Attachments

  • PinchZoomAndMove_1.43.zip
    60.1 KB · Views: 316

coslad

Well-Known Member
Licensed User
Longtime User
Ho provato la classe ed è perfetta , un pelino lenta nel seguire il dito nello scroll , ma va bene cosi' .

Grazie Mille
 

Dominex

Active Member
Licensed User
Longtime User
Ho provato la classe ed è perfetta , un pelino lenta nel seguire il dito nello scroll , ma va bene cosi' .

Bene, anche se è strano questa storia del leggero rallentamento visto che i calcoli in più sono poca cosa. Vedrò s posso migliorare qualcosa.

Inviato dal mio Nexus 7 con Tapatalk 2
 
Top