2016-10-08 12 views
1

Я бы хотел, чтобы моя кнопка (если это была кнопка или еще?), Чтобы играть музыку, когда я наводил на нее курсор и останавливался на HOVER_EXIT. Что мне следует сделать для case MotionEvent.ACTION_HOVER_MOVE:, чтобы сделать кнопку воспроизведения музыки неподвижным, без пауз от ENTER до EXIT и на MOVE ничего не делать? Существует также ошибка - при попытке открыть экран с помощью этого hoverbutton приложение вылетает и отключается. Вот мой Java-код:Может ли кто-нибудь с этим справиться?

import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.Button; 

public class DisplayActivity extends AppCompatActivity { 

Button b1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_screen); 
    b1 = (Button)findViewById(R.id.button1); 
    b1.setOnHoverListener(new View.OnHoverListener() 
    { 

     @Override 
     public boolean onHover(View v, MotionEvent event) { 
      MediaPlayer player=MediaPlayer.create(DisplayActivity.this,R.raw.sound); 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_HOVER_ENTER: 
        player.start(); 
        break; 
       case MotionEvent.ACTION_HOVER_EXIT: 
        player.stop(); 
        break; 
      } 
      return true; 

     } 
    });}` 
+0

Не могли бы вы поделиться 'logcat'? – kujeensiti

+0

Вот строка ошибки: 'java.lang.RuntimeException: не удалось запустить Activity ComponentInfo {com.example.android.appname/com.example.android.appname.DisplayActivity}: java.lang.ClassCastException: android.support.v7 .widget.AppCompatButton нельзя отнести к android.widget.ImageView' – Rediner

+0

Похоже, где-то в вашем коде вы пытаетесь присвоить ссылку 'Button'' ImageView'. Код, указанный в вопросе, завершен? – kujeensiti

ответ

0
public class DisplayActivity extends AppCompatActivity { 

    private MediaPlayer player; 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     // create media player only when required 
     player = MediaPlayer.create(this, R.raw.sound); 

     // this will keep the audio playing, even if you hover for long time 
     player.setLooping(true); 
    } 


    @Override 
    protected void onPause() { 
     super.onPause(); 

     // release is as soon as possible 
     player.release(); 
     player = null; 
    } 


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

     findViewById(R.id.button1).setOnHoverListener(new View.OnHoverListener() { 

      @Override 
      public boolean onHover(
        View v, 
        MotionEvent event) { 
       switch (event.getAction()) { 
       case MotionEvent.ACTION_HOVER_ENTER: 
        player.start(); 
        break; 
       case MotionEvent.ACTION_HOVER_EXIT: 
        // if you choose to stop the player, you need to prepare it again by calling player.prepare(); before restarting it. 
        // I chose to pause it and seek it back to beginning 
        player.pause(); 
        player.seekTo(0); 
        break; 
       } 
       return true; 
      } 
     }); 
    } 
} 

Надеется, что это помогает :)