JavascriptProva

Visualizzazione post con etichetta listener mia_applicazione. Mostra tutti i post
Visualizzazione post con etichetta listener mia_applicazione. Mostra tutti i post

venerdì 15 aprile 2016

Riscrittura del Listener che regola il settingMode nella mia app.

Il meccanismo del DragDrop nella mia applicazione si è rivelato fallimentare, perché l'immagine da "draggare" è troppo piccola... meglio semplificare!

Innanzitutto, ripeschiamo le due variabili:
        boolean padLockLeft=false;
 boolean padLockRight=false;
mi sono scocciato con questa esterofilia! Semplifichiamone il nome.
 boolean lucchettoSin=false;
 boolean lucchettoDx=false;
Quindi lasciando sempre le immagini dei lucchetti creerò un onLongClickListener per ognuno...
Ci provo...

  luccListener = new View.OnLongClickListener() {
   
   @Override
   public boolean onLongClick(View v) {
    if(v==leftBottom){
     if(lucchettoSin==false){
      leftBottom.setImageResource(R.drawable.lucaperto);
      lucchettoSin=true;
     }else{
      leftBottom.setImageResource(R.drawable.lucchiuso);
      lucchettoSin=false;
     }
    }
    
    if(v==rightBottom){
     if(lucchettoDx==false){
      rightBottom.setImageResource(R.drawable.lucaperto);
      lucchettoDx=true;
     }else{
      rightBottom.setImageResource(R.drawable.lucchiuso);
      lucchettoDx=false;
     }
    }
    if(lucchettoSin==true && lucchettoDx==true){
     settingMode=true;
     mainLayout.setBackgroundColor(Color.GRAY);
    }
    if(lucchettoSin==false && lucchettoDx==false){
     settingMode=false;
     mainLayout.setBackgroundColor(Color.BLACK);
    }
    return true;
   }
  };
  
  leftBottom.setOnLongClickListener(luccListener);
  rightBottom.setOnLongClickListener(luccListener);
Ecco, finalmente funziona.

Ci vorrei aggiungere una vibrazione...

Da quello che ho capito, basta istanziare il vibratore (l'ho già fatto una volta ma con poca attenzione, quasi copiando)

Si deve andare a getSystemService.
Ecco il codice completo di vibrazione (da sperimentare):
  luccListener = new View.OnLongClickListener() {
   
   @Override
   public boolean onLongClick(View v) {
    if(v==leftBottom){
     if(lucchettoSin==false){
      leftBottom.setImageResource(R.drawable.lucaperto);
      lucchettoSin=true;
     }else{
      leftBottom.setImageResource(R.drawable.lucchiuso);
      lucchettoSin=false;
     }
    }
    
    if(v==rightBottom){
     if(lucchettoDx==false){
      rightBottom.setImageResource(R.drawable.lucaperto);
      lucchettoDx=true;
     }else{
      rightBottom.setImageResource(R.drawable.lucchiuso);
      lucchettoDx=false;
     }
    }
    
    Vibrator vibrator =(Vibrator)getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
    vibrator.vibrate(500);
    
    if(lucchettoSin==true && lucchettoDx==true){
     settingMode=true;
     mainLayout.setBackgroundColor(Color.GRAY);
    }
    if(lucchettoSin==false && lucchettoDx==false){
     settingMode=false;
     mainLayout.setBackgroundColor(Color.BLACK);
    }
    return true;
   }
  };
  
  leftBottom.setOnLongClickListener(luccListener);
  rightBottom.setOnLongClickListener(luccListener);
Da provare su cellulare...

Funziona, anche con la vibrazione.

venerdì 26 febbraio 2016

Promemoria. Il codice dello "svitamento" nella mia applicazione.

Il codice di "apertura delle viti".
Lo salvo prima di modificarlo.
  screwOpen = new View.OnLongClickListener() {
   
   @Override
   public boolean onLongClick(View v) {
     Vibrator vib = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
     // Vibrate for 500 milliseconds
     vib.vibrate(500); 
    if(v==leftTop && openFlag==0) {
     openFlag=1;
     if(settingMode==false) leftTop.setImageResource(R.drawable.unscrewed);
     else leftTop.setImageResource(R.drawable.screwed);
     
    }
    if(v==rightTop && openFlag==1) {
     openFlag=2; 
     if(settingMode==false) rightTop.setImageResource(R.drawable.unscrewed);
     else rightTop.setImageResource(R.drawable.screwed);
    }
    if(v==leftBottom && openFlag==2){
     openFlag=3;
     if(settingMode==false) leftBottom.setImageResource(R.drawable.unscrewed);
     else leftBottom.setImageResource(R.drawable.screwed);
    }
    if(v==rightBottom && openFlag==3) {
     if(settingMode==false){
      rightBottom.setImageResource(R.drawable.unscrewed);
      settingMode=true;
     
      
     } else
     {
      rightBottom.setImageResource(R.drawable.screwed);
      settingMode=false; 
      button.setVisibility(View.INVISIBLE);
      
     }

     openFlag=0;
    }
    return false;
   }
  };


Ho elaborato una forma "a chiusura rapida":
screwOpen = new View.OnLongClickListener() {
   
   @Override
   public boolean onLongClick(View v) {
     Vibrator vib = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
     // Vibrate for 500 milliseconds
     vib.vibrate(500); 
     if(settingMode==false){
      if(v==leftTop && openFlag==0) {
       openFlag=1;
       Log.d("Openflag",openFlag+"");
       Log.d("settingMode",settingMode+"");
       leftTop.setImageResource(R.drawable.unscrewed);     
      }
      if(v==rightTop && openFlag==1) {
       openFlag=2; 
       Log.d("Openflag",openFlag+"");
       rightTop.setImageResource(R.drawable.unscrewed);
      }
      if(v==leftBottom && openFlag==2){
       openFlag=3;
       Log.d("Openflag",openFlag+"");
       leftBottom.setImageResource(R.drawable.unscrewed);
      }
      if(v==rightBottom && openFlag==3) { 
       Log.d("Openflag",openFlag+"");
      rightBottom.setImageResource(R.drawable.unscrewed);
      settingMode=true; 
      openFlag=0;
     } 
     
     } // fine di if(settingMode==false)
    
     else{
      leftTop.setImageResource(R.drawable.screwed);
      rightTop.setImageResource(R.drawable.screwed);
      leftBottom.setImageResource(R.drawable.screwed);
      rightBottom.setImageResource(R.drawable.screwed);
      settingMode=false;
     
     }
     
     return true;
   }
   
  };


Ma adesso devo lasciare spazio al "ripensamento"...

Eccolo (che faticaccia!)
  screwOpen = new View.OnLongClickListener() {
   
   @Override
   public boolean onLongClick(View v) {
     Vibrator vib = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
     // Vibrate for 500 milliseconds
     vib.vibrate(500); 
    
     if(settingMode==false){
      if(v==leftTop) {
       if(openFlag==0){
        openFlag=1;
        leftTop.setImageResource(R.drawable.unscrewed);
       
       }
       else if(openFlag==1){
        openFlag=0;
        leftTop.setImageResource(R.drawable.screwed);
       }
            
      }
      if(v==rightTop) {
       if(openFlag==1){
        openFlag=2;
        rightTop.setImageResource(R.drawable.unscrewed);
       
       }
       else if(openFlag==2){
        openFlag=1;
        rightTop.setImageResource(R.drawable.screwed);
       }
      }
      if(v==leftBottom){
       if(openFlag==2){
        openFlag=3;
        leftBottom.setImageResource(R.drawable.unscrewed);
       
       }
       else if(openFlag==3){
        openFlag=2;
        leftBottom.setImageResource(R.drawable.screwed);
       }
      }
      if(v==rightBottom && openFlag==3) { 
      rightBottom.setImageResource(R.drawable.unscrewed);
      settingMode=true; 
      openFlag=0;
     } 
     
     } // fine di if(settingMode==false)
    
     else{
      leftTop.setImageResource(R.drawable.screwed);
      rightTop.setImageResource(R.drawable.screwed);
      leftBottom.setImageResource(R.drawable.screwed);
      rightBottom.setImageResource(R.drawable.screwed);
      settingMode=false;
     
     }
     
     return true;
   }
   
  };
...depurato di tutti i Log.d che ho usato per verificare i risultati in LogCat precedentemente.