2016-10-08 85 views
1

我想我的按钮(应该是一个按钮或其他?)来播放音乐,当我停留在HOVER_EXIT上。我应该为 case MotionEvent.ACTION_HOVER_MOVE:执行哪些操作来使按钮播放音乐仍然无间断地从ENTEREXITMOVE不做任何事情? 还有一个错误 - 当我尝试用此悬停按钮打开屏幕时,应用程序崩溃并关闭。 这里是我的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:无法启动活动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; 
      } 
     }); 
    } 
} 

希望这有助于:)

相关问题