Autore Topic: Problemi col thumb della seekBar  (Letto 368 volte)

Offline theKuston

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Play Store ID:
    K-soft
  • Sistema operativo:
    windows 8.1, Ubuntu 14
Problemi col thumb della seekBar
« il: 11 Aprile 2015, 15:48:43 CEST »
0
Weeeeeeeeeeeeee!
Allora io ho creato un layout con 2 seekbar sovrapposte:
Codice (XML): [Seleziona]
<SeekBar
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/seekBar2"
       android:progress="50"
       android:thumb="@drawable/ic_thumb"
       android:secondaryProgress="@android:color/transparent"
       android:progressDrawable="@drawable/line"
       android:layout_alignParentBottom="true"
       android:layout_alignParentRight="true"
       android:layout_alignParentEnd="true"
       android:layout_marginBottom="90dp"
       android:paddingRight="35dp"
       android:paddingLeft="35dp"/>

    <SeekBar
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/seekBar"
       android:progress="50"
       android:thumb="@drawable/ic_thumb"
       android:secondaryProgress="@android:color/transparent"
       android:progressDrawable="@drawable/line"
       android:layout_alignParentBottom="true"
       android:layout_alignParentRight="true"
       android:layout_alignParentEnd="true"
       android:layout_marginBottom="90dp"
       android:paddingRight="35dp"
       android:paddingLeft="35dp"/>
L'idea e`che una delle seekbar abbia come thumb il simbolo di un'allarme e l'altra abbia un'immagine cambiante ( una sbarra diagonale o un "zzz") che si sovrapponga in modo che il disegno finale sia un'allarme cancellata o un'allarme rinviata.
Questo è il codice java (ignorate
Codice (Java): [Seleziona]
tv1 e
Codice (Java): [Seleziona]
tv2):
Codice (Java): [Seleziona]
SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
        final SeekBar seekBar2 = (SeekBar) findViewById(R.id.seekBar2);
        final ImageView tv1 = (ImageView) findViewById(R.id.tv1);
        final ImageView tv2 = (ImageView) findViewById(R.id.tv2);
        final Drawable dismiss = getResources().getDrawable(R.drawable.ic_dismiss);
        final Drawable snooze = getResources().getDrawable(R.drawable.ic_thumb_snooze);
        final Drawable alarm = getResources().getDrawable(R.drawable.ic_thumb);
        seekBar2.setMax(255);
        seekBar.setMax(255);
        seekBar.setProgress(seekBar.getMax()/2);
        seekBar2.setProgress(seekBar.getMax()/2);
        seekBar2.setEnabled(false);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                seekBar2.setProgress(progress);
                if (progress >seekBar.getMax()/2 && fromUser && progress!=seekBar.getMax()){
                    seekBar.setThumb(dismiss);
                    dismiss.setAlpha((progress - (seekBar.getMax() / 2)) * 2);//*2*255
                }
                else if (progress <seekBar.getMax()/2 && fromUser && progress!=0){
                    seekBar.setThumb(snooze);
                    snooze.setAlpha(Math.abs((progress - (seekBar.getMax() / 2)) * 2));
                }
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                tv1.setVisibility(View.INVISIBLE);
                tv2.setVisibility(View.INVISIBLE);
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                Log.d("progress2",seekBar.getProgress()+"");
                int progress = seekBar.getProgress();
                if (progress <seekBar.getMax()/2) {
                    if (progress < (seekBar.getMax() / 100 * 25)) {
                        ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(250);
                        Toast.makeText(MainActivity.this, "Snoozed!", Toast.LENGTH_LONG).show();
                        finish();
                    } else {
                        seekBar.setProgress(seekBar.getMax() / 2);
                        seekBar.setThumb(alarm);
                        tv1.setVisibility(View.INVISIBLE);
                        tv2.setVisibility(View.INVISIBLE);
                    }
                }else if (progress >seekBar.getMax()/2){
                    if (progress >(seekBar.getMax())/100*98){
                        ((Vibrator) getSystemService(VIBRATOR_SERVICE)).vibrate(250);
                        Toast.makeText(MainActivity.this,"Dismissed!",Toast.LENGTH_LONG).show();
                        finish();
                    }
                    else{
                        seekBar.setProgress(seekBar.getMax()/2);
                        seekBar.setThumb(alarm);
                        tv1.setVisibility(View.INVISIBLE);
                        tv2.setVisibility(View.INVISIBLE);
                    }
                }
            }
        });
Il problema è che su lollipop funziona bene, ma sulle versioni anteriori il simbolo della sbarra per capirci va piu avanti o indietro rispetto al simbolo dell'allarme, quindi invece di un'allarme sbarrato viene un'allarme normale, ed affianco una sbarra... non so se mi spiego.
Cosa posso fare?
Grazie! :-) ;-)
Tutte le mie applicazioni sul play store:
https://play.google.com/store/apps/developer?id=K-soft

Offline theKuston

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Play Store ID:
    K-soft
  • Sistema operativo:
    windows 8.1, Ubuntu 14
Re:Problemi col thumb della seekBar
« Risposta #1 il: 13 Aprile 2015, 17:34:08 CEST »
0
Nessuno sa dirmi?
Esiste la possibilitá che sia un errore dell'emulatore e che su un device fisico funzioni bene?
Tutte le mie applicazioni sul play store:
https://play.google.com/store/apps/developer?id=K-soft

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problemi col thumb della seekBar
« Risposta #2 il: 13 Aprile 2015, 19:03:57 CEST »
0
Puoi postare uno screnshot dei due casi?
Aiuterebbe molto ad immaginare qualche soluzione.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline theKuston

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Play Store ID:
    K-soft
  • Sistema operativo:
    windows 8.1, Ubuntu 14
Re:Problemi col thumb della seekBar
« Risposta #3 il: 13 Aprile 2015, 21:18:29 CEST »
0
Puoi postare uno screnshot dei due casi?
Aiuterebbe molto ad immaginare qualche soluzione.
Questo é un video che mostra come dovrebbe essere e come é:
https://drive.google.com/file/d/0BzFDeTFWJtOLWnZOZG9OSHRfM0U/view?usp=sharing
Tutte le mie applicazioni sul play store:
https://play.google.com/store/apps/developer?id=K-soft

Offline theKuston

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: 0
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 5
  • Play Store ID:
    K-soft
  • Sistema operativo:
    windows 8.1, Ubuntu 14
Re:Problemi col thumb della seekBar
« Risposta #4 il: 15 Aprile 2015, 08:14:36 CEST »
0
Risolto!
A quanto pare quando fa il setThumb l'offset si modifica, quindi semplicemente impostando il thumb della seekbar2 dinamicamente nell'onCreate() ha funzionato!
Tutte le mie applicazioni sul play store:
https://play.google.com/store/apps/developer?id=K-soft