「爆発しろ!」ボタン for Android ver0.9できました
重いEclipse様と格闘しながらボタン+Wave効果音だけのお手軽Androidアプリをひとつ作り上げました。C言語ではCUIしかやってないので人生初のGUIプログラミング、かも知れません。
下記二つのファイルをadtの入ったEclipseに放り込んでやればAndroidエミュレータ上で動くはずです。
機能
画面に「爆発しろ!」と書かれたボタンが表示されて、ボタンを押すとsoundファイルが再生されます。再生中にボタンを連打すると再度最初から。ただそれだけ。
soundファイルはEclipseでRunする前にres/rawに適当なsound.waveファイルを置いてください。できれば爆発音だと大変よろしい。
BombButton.java
import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class BombButton extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //ボタンを作って文字とクリック時の処理を設定 Button bButton = (Button)findViewById(R.id.bButton); /*XMLで定義せずプログラムの中でする場合 Button bButton = new Button(this); bButton.setText("爆発しろ!"); */ //MediaPlayerオブジェクトmpを作っておく //final修飾しないとonClickから参照できないってEclipse様が仰いました。 //R.raw.soundは「res/raw」に入れたWaveファイル。 //raw内にsoundという名前のwaveファイルを置けば動くはず final MediaPlayer mp = MediaPlayer.create(this, R.raw.sound); //クリック時の処理を定義 cf.http://www.javadrive.jp/android/button/index3.html //バージョン1.0のSDKではstart();の中にprepare();が含まれる、らしい ドキュメント参照 bButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { mp.seekTo(0); //連打対策として爆発音の0秒に戻す mp.start(); //爆発音スタート } }); } }
main.xml
res/layoutに置く。ボタンを画面中央にするのに結構苦労したのは秘密です。
参照:[android-developers] Problem Centering and Padding Buttons in Layout
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" > <Button android:id="@+id/bButton" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:text = "爆発しろ!" /> </LinearLayout> </LinearLayout>