Italian Chiacchiericci

LucaMs

Expert
Licensed User
Longtime User
Problemino ("ino" si fa per dire) che "sto per affrontando".

Ho creato una mooolto semplice, vuotissima app di prova, giusto per testare la jpg prodotta. Questa ha dimensioni 1919x1078 (diciamo che avrei voluto farla 1920x1080 ma ok).

Sul mio tablet, 1280x800, pur avendo usato LoadBitmapResize, che ha come ultimo parametro KeepAspectRatio, ovvero mantiene le proporzioni, le mantiene "cor ciufolo", i cerchi vengono allungati.

Vedaremo (meno male che ho fatto questa provola!!!)
 

LucaMs

Expert
Licensed User
Longtime User
Ma se po' anna' avanti così?

Mentre scrivevo il post precedente, sullo schermo avevo ancora l'help di b4a in "sovrimpressione", bug segnalato da tempo ad Erel:

upload_2018-5-26_19-27-29.png




Sotto il browser, sopra l'help contestuale, rimasto là, sul desktop, mica incollato io qui per qualche motivo, l'avevo aperto per verificare il nome esatto del parametro KeepAspectRatio.
 

Sagenut

Expert
Licensed User
Longtime User
Però con Keep Aspect Ratio e quelle dimensioni...... Ti farebbe delle bande nere per non deformare.
 

Sagenut

Expert
Licensed User
Longtime User
Controlla che non ci sia qualcosa che imposta delle dimensioni forzate alla imageview......o quello che usi.
 

LucaMs

Expert
Licensed User
Longtime User
Controlla che non ci sia qualcosa che imposta delle dimensioni forzate alla imageview......o quello che usi.
Te l'ho detto, è una prova doppia.

Carico il file immagine (usando LoadBitmapResize) sia come sfondo dell'activity che in un panel che metto a tutto schermo (quindi stesse dimensioni dell'activity).

Poi, con un click sul panel e / o sull'activity, nascondo/visualizzo il panel, per vedere la differenza tra sfondo activity e panel; sono uguali, entrambe sono allungate.

Ora provo con una ImageView ma temo che sarà la stessa cosa.


P.S. Infatti, stessa cosa.
 

Sagenut

Expert
Licensed User
Longtime User
L'activity può essere più piccola del tutto schermo?
Altrimenti distorce per forza perché non può fare il resize.
Se il panel lo forzi alla dimensione della activity distorce per forza, secondo me.
Il panel dovrebbe restare più piccolo sui lati e mostrare l'activity dietro.
Però sono il più novello e potrei dire cavolate.
 

Sagenut

Expert
Licensed User
Longtime User
Secondo me non devi forzare il panel a tutto schermo.
Piuttosto dagli tu le dimensioni che deve avere e posizionalo centrato.
Il problema è che il ratio dei due schemi è molto diverso.
 

LucaMs

Expert
Licensed User
Longtime User
Oh, poi c'è da dire che impostando l'activity a full screen e senza titolo, sul mio Huawei 1920x1080, altezza-larghezza activity (che è anche identico a 100%x e 100%y) le dimensioni risultano soltanto 1776x1080. Mancano ben 144px (tutti dovuti alla "navigation bar", che molti modelli non hanno. Famme vede' se Zynga poker...).


Ricordo di non ricordare che avevo trovato il modo di non visualizzarla.
 

LucaMs

Expert
Licensed User
Longtime User
Molto ma molto meglio, adesso, usando una ImageView con bitmap "centrata" e "immersive mode"; ma chi se lo ricorderà?!?!?!

E poi dovrò usare un panel trasparente sopra l'ImageView per contenere il resto, tutte le varie parti. Va beh.
 

Sagenut

Expert
Licensed User
Longtime User
Riposto una domanda che avevo cancellato perchè credevo di aver risolto da solo.
La XCLV mi pare che non esponga direttamente i valori di LEFT e TOP.
Poi ho trovato che da codice li ottenevo tramite qualcosa del tipo:
B4X:
clv.sv.left
clv.sv.top
Ho però notato che mentre la XCLV è posizionata in una determinata posizione i valori di LEFT e TOP che ottengo con il metodo sopra descritto mi riportano 0 e 0.
Cosa sbaglio?
C'è modo di ottenere LEFT e TOP della posizione reale della XCLV?
Il mio obiettivo è disegnare un riquadro attorno alla XCLV con 4 linee, perchè la funzione BORDER della XCLV disegna il riquadro all'interno.
Se non trovo soluzione probabilmente dovrò ridurre i panel che inserisco in modo che non vadano sul bordo.
 

LucaMs

Expert
Licensed User
Longtime User
Dai un'occhiata alle proprietà che xCLV espone (le vedi elencate nel tab Modules, se ne selezioni la classe).

sv dovrebbe essere la ScrollView, che è l'elemento principale ma sta in un panel, ed è questo che devi spostare. Per "ottenerlo", puoi usare sia il metodo AsView che GetBase:

clv.AsView.Left = ...
 

LucaMs

Expert
Licensed User
Longtime User
Il mio obiettivo è disegnare un riquadro attorno alla XCLV con 4 linee, perchè la funzione BORDER della XCLV disegna il riquadro all'interno.
Se non trovo soluzione probabilmente dovrò ridurre i panel che inserisco in modo che non vadano sul bordo.
Puoi usare quanto sopra per accedere al pannello base di xCLV ma se vuoi fare un bordo intorno alla xCLV, dovresti ingrandire questo pannello ottenuto ed anche centrare la ScrollView del xCLV, poi.

Direi che ti conviene mettere un panel che faccia da bordo sotto la xCLV, leggermente più grande di questa; tanto un panel "costa" poco (in termini di memoria e velocità).

P.S. Più precisamente, metti proprio la xCLV dentro al pannello che farà da cornice; meglio ancora.
 

Sagenut

Expert
Licensed User
Longtime User
In 2 secondi mi hai risolto il danno. :rolleyes:
Usando:
B4X:
clv.asview.left
clv.asview.top
ho ottenuto le giuste coordinate per disegnare il riquadro usando 4 linee esattamente come prima.
 
Last edited:
Top