Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - wlf

Pagine: [1] 2 3 ... 28
1
View e Layout / Re:NestedScrollView & header
« il: 20 Aprile 2018, 09:58:57 CEST »
No, ma l'ho messo anche dentro a Toolbar; quando mi collassa oltre una certa percentuale faccio sparire il linearLayoutHeader e faccio comparire lo stesso dentro alla Toolbar. In questo modo riesco a farlo rimanere.

Tu invece dici di piazzarlo nella CollapsingToolbarLayout sotto la ImageView come elemento fisso?
 

2
View e Layout / NestedScrollView & header
« il: 13 Aprile 2018, 14:47:04 CEST »
Sarebbe possibile in un layout di questo tipo fare in modo che il linearLayoutHeader non sparisca quando trascino verso l'alto gli elementi della recyclerViewProduct?

Ho provato anche a metterlo tra la AppBarLayout e la NestedScrollView ma senza venirne a capo. Qualche suggerimento?


Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/background_light"
    android:fitsSystemWindows="true"
    >

    <android.support.design.widget.AppBarLayout
        android:id="@+id/main.appbar"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:fitsSystemWindows="true"
        >

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/main.collapsing"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleMarginEnd="64dp"
            >

            <ImageView
                android:id="@+id/main.backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:fitsSystemWindows="true"
                android:src="@drawable/material_flat"
                app:layout_collapseMode="parallax"
                />

            <android.support.v7.widget.Toolbar
                android:id="@+id/main.toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin"
                />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/linearLayoutHeader"
                android:layout_width="match_parent"
                android:layout_height="80dp"
                android:orientation="vertical">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Testo header prodotti"
                    android:textSize="14sp" />

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:text="Totale prodotti"
                        android:textSize="14sp" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentRight="true"
                        android:text="Totale costo prodotti: xx€"
                        android:textSize="14sp" />
                </RelativeLayout>
            </LinearLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerViewProduct"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:clipToPadding="false" />

    </android.support.v4.widget.NestedScrollView>

</android.support.design.widget.CoordinatorLayout>

3
Ho un activity_main con una XML con un CoordinatorLayout con all'interno un LinearLayout che contiene un ViewPager e un TabLayout.

Questo carica 3 fragment, viene fatta l'inflate di un XML a seconda della fragment desiderata. Nella principale vorrei inserire un CollapsingToolbarLayout; ho dei problemi a farla collassare. Sto provando a fare l'inflate del seguente XML:

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@color/white"
    android:fillViewport="true"
    android:fitsSystemWindows="true"
    tools:context=".main.MainActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appBar"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:fitsSystemWindows="true">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsingToolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleMarginEnd="64dp"
            app:title="Titolone di prova">

            <ImageView
                android:id="@+id/toolbarImage"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:fitsSystemWindows="true"
                android:src="@drawable/bg"
                app:layout_collapseMode="parallax" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin" />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="28sp"
            android:lineSpacingExtra="8dp"
            android:text="@string/testo_prova"
            android:padding="@dimen/text_padding" />
    </android.support.v4.widget.NestedScrollView>

</LinearLayout>

Il mio errore è il CoordinatorLayout nella main? Dovrei spostarlo dentro alla fragment? Se il CoordinatorLayout  mi servisse anche nelle altre fragment?


4
Activity, Fragment e Intent / Gesture su fragment e annidamento
« il: 11 Aprile 2018, 16:32:43 CEST »
Ho un activityHome con 3 fragment, A B e C. Il fragrmentB è la mia Main principale che voglio visualizzare; riesco a far partire l'App dalla fragmentB che è "quella centrale" diciamo.
Con le gesture, swipe a dx e sx, riesco tranquillamente a passare sulle altre 2 fragment, fragmentA e fragmentC, idem se tappo direttamente sulla TabLayout che mi visualizza le 3 fragment.

La fragementA dovrei caricare dei dati a sua volta suddivisi in 3 fragment, fragment1, fragment2, fragement3. E' possibile caricare altre 3 fragment dentro ad una fragmentA mantenendo la TabLayout della activityHome?


fragmentA <-- fragmentB --> fragmentC
      |
      |
fragment1 --> fragment2 --> fragment3

Oltre a mantenere la TabLayout della activityHome sul bottom dell'App vorrei visualizzare sul top invece 3 pallini per far capire all'utente se si trova rispettivamente su fragment1, fragment2 e fragment3.

E' possibile farlo oppure devo per forza rinunciare alle 3 fragment principali sostituendoli con 3 bottoni che simulano il comportamento delle 3 fragment rinunciando alle gesture per passare alle 2 fragment laterali, A e C?

Grazie.




5
Secondo me con il bottone per passare ad un altro fragment non devi farlo tramite intent ma solamente tramite viewPager.setCurrentItem(x) dove x è il numero di fragment che ti interessa!

6
Utilizzo della Rete / Conferma http
« il: 22 Marzo 2018, 15:09:08 CET »
Salve,
comunicando in http, essendo asincrono, come si fa ad avere certezza che una richiesta http sia completata da entrambe i lati?

Nel caso io faccia una post inviando informazioni al server ho la response che dovrebbe farmi capire se le informazioni sono arrivate dall'altro capo.

App -- post --> Server
Server -- response --> App

In questo caso potrebbe accadere che il Server abbia ricevuto i dati ma per qualche motivo l'App si sia persa la response? Se il server tra la ricezione e l'invio della response dovesse fare qualche operazione che va in exception in questo caso potrebbe aver ricevuto i dati senza essere riuscito a confermarli con una response. Quindi l'App non avendo ricevuto una response potrebbe rischiare di postare ancora gli stessi dati.

Viceversa nel caso di una get chiedendo ad un server se ci sono nuove informazioni da inviare all'App potrei avere:

App -- get --> Server
Server -- response --> App

In questo caso l'App potrebbe:
- Aver ricevuto la response e quindi il server non deve più rispondere inviando nuovamente gli stessi dati.
- Essersi persa la response e quindi alla prossima get il server dovrebbe rimandarle i dati che si è persa precedentemente.

Quindi l'App dovrebbe in qualche modo comunicare al server di aver ricevuto le informazioni perché altrimenti la prox volta questo comunicherà nuovamente le stesse informazioni pensando che l'App non le abbia ricevute. Per fare questo aggiungerei nuovamente una post di conferma della ricezione della get:

App -- post --> Server
Server -- response --> App

Se l'App non riceve una response avrebbe  ancora il dubbio che il server non abbia recepito la conferma, quindi dovrebbe continuare a mandare una post di conferma finché non riceve una response.

Esiste qualche "use-case" di come si gestisce questa casistica? Che un App voglia inviare una informazione ad un server e che ne debba ricevere una (output & input).

Grazie.

7
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 19 Settembre 2017, 15:42:02 CEST »
A suo tempo cercai di ovviare al problema cercando di "killare" l'App completamente, in questo modo alla successiva ripartenza il singleton si sarebbe ricreato. Ma non ho trovato una soluzione per riuscire a killare l'App dopo un tot di secondi che non è più operativa.

Tu hai mai fatto qualcosa del genere? Non sarebbe una soluzione, ma un modo per aggirare il problema.

8
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 19 Settembre 2017, 13:42:44 CEST »
Io a suo tempo avevo proprio dato per scontato che Application ripassasse per la onCreate e re-inizializzasse il singleton, avevo anche messo un controllo, ma così non accadeva. Nella onCreate di Application inizializzavo nuovamente i valori ma mi beccavo dei NullPointerException. :(

9
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 19 Settembre 2017, 10:47:29 CEST »
Innanzi tutto grazie delle tue preziose considerazioni Ohmnibus! ;)

Il singleton è un metodo sicuro: non può essere fatto fuori dal CG fintanto che l'app non viene terminata.

Non pare essere sempre vero. Io stesso utilizzavo un singleton inizializzato dentro ad Application, ma sporadicamente avevo delle NullPointerException. Per questo motivo ho tolto l'inizializzazione in application e tutte le volte che chiamavo il singleton io lo inizializzavo se per caso era a null.

10
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 18 Settembre 2017, 12:22:27 CEST »
Faccio la Initialize() e la open per ogni volta che utilizzo il db dopo di che lo chiudo con la close.

Tenerlo come singleton in application mi piace decisamente di meno.

11
View e Layout / RotateAnimation & notifyDataSetChanged()
« il: 31 Agosto 2017, 18:04:31 CEST »
Salve,
ho una RotateAnimation che mi fa girare una immagine e nel frattempo carico dei dati quindi notifico circa ogni 2 secondi che i dati sono cambiati tramite notifyDataSetChanged().

Se guardo l'immagine che ruota ha una sorta di impuntamento proprio in occasione della variazione dei dati.

E' possibile fare in modo che la RotateAnimation giri "liscia" e nel frattempo faccio le notifyDataSetChanged() senza che si blocchi?
Grazie.

12
Gestione dei dati / Re:Sqlite & AsyncTask/Service (task concorrenti)
« il: 01 Agosto 2017, 12:31:38 CEST »
Istanziare MyDbManager da Application, una sorta di Singleton, personalmente lo trovo pericoloso. Che sicurezza dopo aver pausato l'App anche per alcuni giorni, potresti riprenderla (resume) che il GC ti ha fatto fuori MyDbManager. :(

Per questo trovo leggermente più sicuro l'approccio del link; il tuo è semplificato ma più o meno fa la stessa cosa. ;)

13
Gestione dei dati / Sqlite & AsyncTask/Service (task concorrenti)
« il: 01 Agosto 2017, 09:54:35 CEST »
Salve,
ho la necessità di utilizzare Sqlite sia da diverse Activity, sia da AsyncTask che da dei Service. A volte mi capitano delle situazioni che mi viene dato "database already closed" oppure "database is locked ".

Se apro il db nella onCreate() e lo chiudo nella onDestroy() passando da una activity ad un altra la onCreate() di quella successiva è prima della onDestroy() di quella precendente. Facendolo nella onPause() e onResume() mi ritrovo con degli AsyncTask che casomai non sono ancora cessati che vanno a scrivere dopo la onPause(). Idem con i Service. :(

Aprendo il db anche nell'AsyncTask e nei Service mi ritrovo con una re-open; posso controllarlo in fase di apertura con una db.isOpen() ma poi posso aver problemi se il db nel frattempo è già stato chiuso. :(

Ho trovato un interessante soluzione ma non mi convince del tutto. In particolare la initializeInstance() dove andrebbe fatta? Solamente una volta, magari in Application o nella prima activity dell'App oppure sempre prima di ogni getInstance().openDatabase()?

Perché la getInstance() ritorna un Exception, non lo re-inizializza, quindi senza chiamare preventivamente la initializeInstance() il db sarà comunque inaccessibile.

14
Gestione dei dati / Re:File su micro sd marshmallow
« il: 31 Luglio 2017, 17:30:25 CEST »
Un inferno; come spesso accade il comportamento è in base alla versione del SO.

15
Gestione dei dati / Re:File su micro sd marshmallow
« il: 24 Luglio 2017, 09:45:23 CEST »
@Ohmnibus
Ok, ma la mia curiosità è se si riesca a scrivere in radice della microSD che dovrebbe essere "/storage/16EF-2C14" oppure questo comporti che si abbiano i permessi di root?
E' praticamente come scrivere file nella memoria interna? Non si esce quindi dalla cartella dell'App senza permessi di root?

Pagine: [1] 2 3 ... 28