Domanda

Java / Android noob qui, ho un problema in cui utilizzo OnTouchListener Modo la variabile X su x + 1 e che funziona bene, ma quando rilascio vorrei che la variabile X.Quindi:

    Imageview image = (ImageView) findViewById(R.id.fgView);

    image.setOnTouchListener(new View.OnTouchListener()
    {

        public boolean onTouch(View v, MotionEvent event)
        {switch (event.getAction() & MotionEvent.ACTION_MASK)
            {

            case MotionEvent.ACTION_DOWN:

                    mode=1;

                break;
            case MotionEvent.ACTION_UP:

                mode=2;

                break;
            case MotionEvent.ACTION_POINTER_UP:

                mode2=2;

                break;
            case MotionEvent.ACTION_MOVE:

                mode=1;

                break;
            case MotionEvent.ACTION_POINTER_DOWN:

                mode2=1;

                break;
            }

        }
       if(mode==1){
       x++;
       }

       if(mode==2){
       x * 0.9
       }

       //mode2 is filler

     }
.

Ora che funziona bene, il mio problema arriva quando voglio che la mia X continui a diminuire dopo il rilascio, ma dal momento che è sotto SetyontoouchListener, allora non funziona. Forse qualcosa del genere:

     public boolean onTouchFalse(View v){
          if(x>0){
              x * 0.9
          }
     }
.

o anche qualcosa come

     public boolean image.isOnScreen{
         if(x>0){
            x = x * 0.9
         }
     }
.

TL; DR: Sto cercando qualche tipo di ascoltatore che potrei usare per deprezzare la mia x.

C'è un ascoltatore o qualche classe che mi manca?Grazie per qualsiasi aiuto!

È stato utile?

Soluzione

    final Handler handler = new Handler();


    image.post( new Runnable() {
        @Override
        public void run() {

            x--;
            handler.postDelayed(this, 100);

        }
    });
.

** Si noti che il 100 è quanto tempo tra ogni sottrazione (in millisec)

Altri suggerimenti

Non ci sono eventi touch se non stai toccando lo schermo.Gli eventi hanno bisogno di un trigger, forse un timer potrebbe aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top