2016-04-22 12 views
1

私はボタンとしてImageViewを持っています。私はそれをクリックして音を鳴らし、別のアクティビティに切り替えたいと思っています。それだけでは完全に動作しますが、ミックスすることはできません。サウンドを再生したり、アクティビティを切り替えることができます。 アクティビティスイッチコード:Androidスタジオ1ボタン2イベント

public void imagebutton (View v) { 
    Intent startNewActivity = new Intent(this, NewActivity.class); 
    startActivity(startNewActivity); 
} 

サウンドコード:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final MediaPlayer sound = MediaPlayer.create(this, R.raw.clicksound); 

    ImageView click = (ImageView) findViewById(R.id.imagebutton); 

    click.setOnClickListener(new View.OnClickListener() 

          { 
           @Override 
           public void onClick (View v){ 
            sound.start(); 
           } 
          } 
    ); 

感謝。

答えて

1

あなたは必ず音がオーバーであることを確認するためにsetOnCompletionListenerを使用して、新しい活動を開始することができ

click.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick (View v){ 
      sound.start(); 
      Intent startNewActivity = new Intent(MainActivity.this, NewActivity.class); 
      startActivity(startNewActivity); 
     } 
    } 
); 

またあなたのmanifest.xmlに.NewActivityをチェック

+0

ありがとう! "新しいインテント(this、NewActivity.class)"は動作しませんが、 "new Intent(MainActivity.this、NewActivity.class);"それは完全に動作します。 – 6Geri6

+0

MainActivityの代わりにコンテキストを使用することもできます。 –

0

あなたが前にあなたの新しい活動を開始し、あなたのサウンドを再現するAsyncTaskを実装することができますsound.start();

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final MediaPlayer sound = MediaPlayer.create(this, R.raw.clicksound); 

    ImageView click = (ImageView) findViewById(R.id.imagebutton); 

    click.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick (View v){ 
      sound.start(); 
      Intent startNewActivity = new Intent(this, NewActivity.class); 
      startActivity(startNewActivity); 
     } 
    } 
); 
+0

ありがとう! "新しいインテント(this、NewActivity.class)"は動作しませんが、 "new Intent(MainActivity.this、NewActivity.class);"それは完全に動作します。 – 6Geri6

0

の下で活動を起動するようにコードを入れてください。

public class BackgroundSound extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected Void doInBackground(Void... params) { 
     MediaPlayer player = MediaPlayer.create(this, R.raw.clicksound); 
     player.setLooping(true); // Set looping if you want 
     player.setVolume(100,100); // Set Volume if you want 
     player.start(); 
     return null; 
    } 
} 

このように使用します。BackgroundSound.execute();新しい活動を開始する前に

0

、このようにしてみてください。

final MediaPlayer sound = MediaPlayer.create(this, R.raw.clicksound); 
     sound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mp) { 
       Intent startNewActivity = new Intent(this, NewActivity.class); 
       startActivity(startNewActivity); 
      } 
     }); 
     ImageView click = (ImageView) findViewById(R.id.imagebutton); 
     click.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick (View v){ 
       sound.start(); 
      } 
     } 
関連する問題