2014-02-11 2 views
0

У меня есть этот код, который выполняет действия, когда я касаюсь и отпускаю кнопку. Но оказывается, она выпускает сразу, даже если я не отпуская ее ещеAndroid onTouchListener MotionEvent нежелательное освобождение

switch (v.getId()) 

     { 
     case(R.id.turnoffall): 
      if(event.getAction() == MotionEvent.ACTION_DOWN); 
      { 
       v.setBackgroundResource(R.drawable.boffall2); 
       Toast.makeText(getApplicationContext(), "Pressed! ! !",Toast.LENGTH_SHORT).show(); 
      } 
      if(event.getAction() == MotionEvent.ACTION_UP); 
      { 
       v.setBackgroundResource(R.drawable.boffall1); 
       Toast.makeText(getApplicationContext(), "Released.",Toast.LENGTH_SHORT).show(); 
      } 
      break; 
} 

, как я могу сделать это правильно?

+0

вы пытались вернуть истинный после того, как вы справились прикосновение? –

+0

yup,. Тот же. –

+0

Вы не смогли добавить код, который попробуете? –

ответ

1

Попробуйте изменить этот код. Я протестировал его. Оно работает!

main_activity.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" 
     android:layout_gravity="center" /> 
</FrameLayout> 

MainActivity.java

public class MainActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_activity); 

     Button button = (Button) findViewById(R.id.button); 
     button.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       switch (view.getId()) { 
        case R.id.button: 
         switch (motionEvent.getAction()) { 
          case MotionEvent.ACTION_DOWN: 
           Toast.makeText(getApplicationContext(), "Pressed! ! !", Toast.LENGTH_SHORT).show(); 
           return true; 
          case MotionEvent.ACTION_UP: 
           Toast.makeText(getApplicationContext(), "Released! ! !", Toast.LENGTH_SHORT).show(); 
           return true; 
          default: 
           return false; 
         } 
        default: 
         return false; 
       } 
      } 
     }); 
    } 
} 
+0

приятный, .did трюк., Спасибо! –

+0

это именно то, что я имел в виду;) THX myCode –

 Смежные вопросы

  • Нет связанных вопросов^_^