Italian Problemino su Widget... alle prime armi su questi.

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Ok. Ma come hai fatto a trasformare il Panel e l'immagini trasparenti? Non capisco, non capisco :rolleyes:
 

LucaMs

Expert
Licensed User
Longtime User
Il panel mettendo nel Designer, come colore, Transparent.

Le png ho usato uno dei tanti programmi per convertire le immagini, anche se non l'ho convertita, gli ho solo indicato quale fosse il colore trasparente, in questo caso il bianco.

Molto leggero, comodo e veloce è IrfanView; Paint.Net è molto utile anche per disegnare.
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Ah Ecco... i, solitamente, utilizzo PhotoShop giostrando le trasparenze, e mi funziona... ma sui Widget no!
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Il problema, in parte risolto, ora è un po più complicato.
Modificando iil file xml del Panel, sono riuscito a ridimensionare il wdget e ad avere la trasparenza.
Ora, però, avrei la necessità di inserire altre 2 bitmapp (ImageView) all'interno di questo (una sopra ed una sotto) e, girando in rete, ho trovato un esempio in Java che, nel mio caso modificando sempre l'xml, suddivide il panel in parti.
Il tutto, va inserito all'interno di una RemoteView... qui, nascono i problemi.
Questo è il mio xml


B4X:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">
  <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:gravity="center" android:layout_x="0dp" android:layout_y="0dp">
  <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_gravity="center_vertical">
  <RelativeLayout android:id="@+id/stay_on_panel1" android:scaleType="fitXY" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_x="0dp" android:layout_y="0dp">
  <ImageView android:scaleType="fitXY" android:id="@+id/stay_on_imageview3" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_x="0dp" android:layout_y="0dp" android:visibility="visible" />
   <ImageView android:scaleType="fitXY" android:id="@+id/stay_on_imageview1" android:layout_width="match_parent" android:layout_height="match_parent"  android:layout_x="0dp" android:layout_y="0dp" android:visibility="visible" />
  <ImageView android:scaleType="fitXY" android:id="@+id/stay_on_imageview2" android:layout_width="match_parent" android:layout_height="wrap_content"  android:layout_x="0dp" android:layout_y="0dp" android:visibility="visible" />
  </RelativeLayout>
  </LinearLayout>
  </RelativeLayout>
</AbsoluteLayout>

Tutto questo, viene caricato in una RemoteView contenente un Panel (per il funzionamento del Widget), una ImageView1 principale e due ImageView (2-3) che tilizzerei come barra superiore e inferiore... e qui nasce il problema :(

La ImageView3 viene sovrapposta alla ImageView1 e posizionata in Top... ma anche la ImagView2 si trova li sotto la 3).

Come fare a posizionare verticalemente (TOP e BOTTOM) le du eimmagini, rendendole ridimensionabili? Si può?

Ho provato ad inserire, dopo il "wrap_contet"

B4X:
Android:layout_weight="1"


ma non ha nessun effetto. :confused:

Dal Service Mode, faccio questo richiamo:

B4X:
rv.SetImage("ImageView2", LoadBitmap(File.DirAssets, "TOP.png"))
rv.SetImage("ImageView1", LoadBitmap(File.DirAssets, "CENTER.png"))
rv.SetImage("ImageView3", LoadBitmap(File.DirAssets, "BOTTOM.png"))

Sicuramente sto facendo casini anche peché, tutte e immagini dovrebbero essere cliccabili (mentre pe ora lo è solo la centrale).

Dove sbaglio?
Grazie
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
Quando potrò darò un'occhiata migliore, ma nel file xml tutte le imageview hanno gli stessi parametri, per questo si sovrappongono:

android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:layout_x="0dp" android:layout_y="0dp"
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
il fatto è che non vanno sul loro Layout. Avendo passato la delimtazione per suddividere il panel in 3 parti, mi aspettavo che, ogni immagine, veniva caricata a se stante e non tutte nello stesso.
Ma, sicuramente, ho sbagliato qualcosa.... e forse anche di grande :D
Per ora ho messo un altra immagine trasparente a funzione di Click ma,avendo messo grandezza fissa (per evitrare che occupi tutto il panel), quando ingrandisco il widget, questa resta logicamente della stessa dimensione data.
Una volta cliccata, apro un Main e vi inserisco il Menu ma... non riesco a passare le variabili (se possibile) e mi e toccato creare un file testo :(.
Oggi sono rintronato per una cresima di ieri e fatte ore piccole :oops:
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
beh siamo rintronati in due, mal comune... ma quale mezzo gaudio, fregatura intera!

cmq, secondo me intanto dovresti modificare
android:layout_y="0dp" che è uguale per tutt'e tre le imageview!
android:layout_y="90dp"
android:layout_y="180dp"
?

l'altezza di una è: android:layout_height="match_parent", se non ricordo male, riempie il pannello, in questo caso
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Vabbè, proverò al prossimo Widget. ;)
Per ora, mi accontento della sezione Menu (come Main) e funziona bene... anche se non caisco come diamine si fa a teminare definitivamente questi Main. Qualsiasi app (anche a pagamento o scaricata), una volta che la chiudo, mi si piazza sulla sinistra della barra Home, fin quando noll la trascino con via con il dito (e capita a parecchie persone). :mad: ....a riuscirci, si potrebbe fare una App che le chiuda tutte in automatico ;):D
Comunque, la versione PRO (con il controllo Batteria e Prossimità da poter attivare) è qusi terminata... ora la vorrei mettere a Pagamento (e lasciare Free quella con solo l'ON/OFF ma senza prossimità, ridimensionamento e settaggio spegnimento App con il livello della batteria).
Quanto pesni che la dovrei mettere? Io pensavo a 0.75€ e sperare che la acquistino.:D
Unico dilemma è... come fare per metterla a pagamento su Google Play? Io ho attivo il banking (se clicco ulle monete, dice che non ho guadagni e se metto una App, mi chiede se la voglio mettere gratuita o a pagamento) ma non ho dato nessuna carta :confused:
Questo lo chiedo a chi ha già messo App a pagamento... ma come proteggere la propria App?
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Bene, la versione PRO è terminata...manca solo un piccolo, ma fatidioso, difetto.
Nell'immagine, vorrei posizionare un teto (string) in alto a siistra, con i valori della batteria assehìgnati per lo stanby dell'app e quelli della batteria rimanenti.
Ho entrambi i campi ma, essendo il widget ridimensionabile (quindi con il file xml protetto), dovrei trovare una soluzione per rendere, se è possibilefarlo, il testo ridimensionabile anche nel widget.
Poi, cosa che non capisco, questo non mi si vede.... eppure è dichiarato, riempito e presente :confused:
Manca pochissimo...ultimo sforzo e aiutino. :D
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
:D:D
Mah! non me lo vede proprio!
Poi, mi sembra che quel Match_parent sia in orizzontale che in verticale, lo renda a schermo intero (e quindi lo posizioni al centro), rischiando di sovrapporsi al touch dell'intera immagine.
...non vorrei che, essendo il file xml di sola lettura, non possa farmi cambiare i valori nemmeno in memoria (che è la mia cretinata del giorno :D).

Ecco il mio XML


B4X:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">
  <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:gravity="center" android:layout_x="0dp" android:layout_y="0dp">
    <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" android:layout_gravity="center_vertical">
      <RelativeLayout android:id="@+id/stay_on_panel1" android:layout_width="match_parent" android:layout_height="match_parent"  android:layout_x="0dp" android:layout_y="0dp" android:visibility="visible">
        <ImageView android:scaleType="fitXY" android:id="@+id/stay_on_imageview1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_x="0dp" android:layout_y="0dp" android:visibility="visible" />
        <ImageView android:scaleType="center" android:id="@+id/stay_on_imageview2" android:layout_width="30dp" android:layout_height="30dp" android:layout_x="0dp" android:layout_y="0dp" android:visibility="visible" />
          <TextView android:id="@+id/stay_on_label3" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_x="0dp" android:layout_y="0dp" android:visibility="visible" android:text="" android:gravity="fill_horizontal|center_vertical" android:textSize="14dp" android:textStyle="bold" android:typeface="normal" />
    </RelativeLayout>
    </LinearLayout>
  </RelativeLayout>
</AbsoluteLayout>

Questa è l'immagine che mi appare e, come si vede, manca il testo che, normalmente dovrebbe andare sopra la batteria (è una sola immagine) ma, nel XML, è settata al centro... e non si vede :(:
img1.png
 

LucaMs

Expert
Licensed User
Longtime User
Prova ad adattare questo, poi un giorno mi metterò a studiare 'sti layout xml :)

<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/propfile"
/>

<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="text"
android:layout_centerInParent="true"
/>
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Niente da fare. il wrap_content, in questi casi, deforma l'immagine e non permette il ridimensionamento.
Poi, con il tuo pezzo di codice, il Widget è completamente trasparente (vedi, invisibile).
La cosa strana è che non riesco a visualizzare il testo, nemmeno centrale.
Eppure la variabile è piena. Infatti ho cancellato il file testo e creato delle Label nel mio Modulo (tanto era solo 3 i valori che mi servivano) e, questi, vengono caricati dal mio secondo Main (quello con il menu).
Mettendo un Break e analizzando il loro valore, risulta pieno.
Ora, la Label, i trova nel Modulo e gli passo uno di quei valori (il livello della batteria)... ma non visualizza nulla anche se pieno o se metto come testo "pincopallino" :eek:
 

LucaMs

Expert
Licensed User
Longtime User
Bene, non ci sto capendo niente. Ricapitoliamo.

Come mai non puoi fare come nell'esempio di Erel, tutto in un panel? Perché vuoi ridimensionare il widget, credo, ma non ho capito cosa intendi; vuoi che una volta clickato oppure a tempo, questo cambi le dimensioni o che si adatti allo schermo dell'utente? (Senza contare che stai creando un widget enorme, non so le lo scaricheranno volentieri, così).
 

CyclopDroid

Well-Known Member
Licensed User
Longtime User
Allora ricapitoliamo.
Il mio Widget ha grandezza normale (per la mia risoluzione) ma, visto che nella mia versione Free mi hanno detto che nel loro Tablet il widget era troppo grande (mentre nel mio 4.5" andava bene, anzi forse pure un po piccolo), ho decis di dare la possibilità a chiunque, di ridimensionarselo da solo (il classico press e "Ridimensiona" con la manina, per intenderci).
L'XML va bloccato perché altrimenti viene reiscritto ad ogni avvio dell'APP (perdendo quindi le modifiche apportate e, con loro, la possibilità della trasparenza e del ridimensionamento).
Quindi, posso ridimesionare, ma con un solo Panel e con una unica immagine (altrimenti si rischia di ingrandirle tutte come la prima) e le latre non dimensionabili (ma quando si allarga o stringe, essendo dpi fissi, non coincidono :()...anche se, forse, si potrebbero utilizzare più panel (ma non so).
Quindi ho fatto TUTTO in una unica immagine. Potrei inserire il valore della batteria anche una per ogni immagine ma... :eek: 100 Imaggini (la batteria l'ha solo il tasto ON) mi sembrano troppe (anhe se ho visto qualcuno che ha messo 60 lancette dell'orologio come immagini :eek::D).
Insomma. ecco perché a me interesserebbe solo posizionare un benedetto testo sopra l'immagine, ma poi c'è il fattore ridimensionamento che non funziona. Ho provato con la libreria StringUtils ma ricevo sempre errori (forse perchéil Widget non lo accetta.)
Ninsò... mi pare brutto non mettere la percentuale in mostra.
 

LucaMs

Expert
Licensed User
Longtime User
Il numero in percentuale è migliore, ma potresti sempre mettere un oggetto largo in percentuale (una label o un panel), ma mi sa che così ti complico la vita.

Ho riletto qualche post nel tutorial di Erel e lui dice che la dimensione è automatica, in base alle dimensioni minime del pannello.
Quindi è normale che in un Tablet grande il widget diventi troppo grande.

Uhm... non sappiamo se sono supportati più Variant! Se fosse così, potresti crearne due identici, uno più grande dell'altro, e fare prove con un emulatore Tablet.
 
Top