2016-10-08 126 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; 
      } 
     }); 
    } 
} 

希望這有助於:)

相關問題