Pergunta

Java/Android noob aqui, tenho um problema onde usando onTouchListener eu mudo a variável x para x+1 e isso funciona bem, mas quando eu liberar gostaria que a variável x diminuísse de valor até chegar a zero, assim:

    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

     }

Agora isso funciona bem, meu problema surge quando quero que meu x continue diminuindo após o lançamento, mas como está em setOnTouchListener, não funciona.Talvez algo assim:

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

ou até mesmo algo como

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

dr:Estou procurando algum tipo de ouvinte que possa usar para depreciar meu x.

Existe um ouvinte ou alguma aula que estou perdendo?Obrigado por toda e qualquer ajuda!

Foi útil?

Solução

    final Handler handler = new Handler();


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

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

        }
    });

** Observe que 100 é o tempo entre cada subtração (em milissegundos)

Outras dicas

Não há eventos de toque se você não estiver tocando na tela.Os eventos precisam de um gatilho, talvez um cronômetro possa ajudar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top