2016-10-08 2 views
1

私はそれにカーソルを置いてHOVER_EXITで止まると、音楽を鳴らすために私のボタンが好きです(それはボタンかsthなのでしょうか?)。 case MotionEvent.ACTION_HOVER_MOVE:のボタンを再生するにはどうすればいいですか?ENTERからEXITへの一時停止なしで、MOVEは何もしませんか? エラーもあります。このホバーボタンで画面を開こうとすると、アプリがクラッシュしてオフになります。ここで は私の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

あなたのコードのどこかで、 'ImageView'に' Button'の参照を割り当てようとしているようです。質問に記載されているコードは完全ですか? – 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; 
      } 
     }); 
    } 
} 

ホープ、このことができます:)

関連する問題