android程式設計實例入門 -Sample改寫分享 (2014/10/17)
android程式設計實例入門 -Sample改寫分享 (2014/10/17)
此範例為程式碼(06\Sample01)的改寫,利用一個LinearLayout、三個Button來實作GUI界面,並透過3個按紐來控制MediaPlayer播放資源檔內ring.mp3狀態使用範例(ps由於並沒有讓MediaPlayer可見,所以不用放到LinearLayout中),程式碼如下所示:
package com.jashsample;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Random;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnKeyListener;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.text.format.DateFormat;
import android.text.method.KeyListener;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.ViewFlipper;
/*
* 建立1個MediaPlayer和3個按鈕,利用3個按紐來控制MediaPlayer播放資源檔內ring.mp3狀態。
*/
public class MainActivity extends Activity {
Button[] bt = new Button[3] ;
MediaPlayer mp;//不顯示所以不用放到LinearLayout中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
setContentView(ll);
for(int i=0; i<bt.length; i++)
{
bt[i] = new Button(this);
}
bt[0].setText("播放");
bt[1].setText("暫停");
bt[2].setText("停止");
bt[0].setEnabled(true);
bt[1].setEnabled(false);
bt[2].setEnabled(false);
for(int i=0; i<bt.length; i++)
{
ll.addView(bt[i]);
bt[i].setOnClickListener(new SampleClickListener());
}
}
public void onResume()//在此時建立MediaPlayer實體
{
super.onResume();
mp = MediaPlayer.create(this, R.raw.ring);
mp.setOnCompletionListener(new SampleCompletionListener());//MediaPlayer初始化時定義按鈕狀態
}
public void onPause()//當畫面暫停,釋放MediaPlayer資源
{
super.onPause();
mp.release();
}
class SampleCompletionListener implements OnCompletionListener
{
public void onCompletion(MediaPlayer mp)
{
bt[0].setEnabled(true);
bt[1].setEnabled(false);
bt[2].setEnabled(false);
}
}
class SampleClickListener implements OnClickListener
{
public void onClick(View v)
{
if(v == bt[0])//所有按鈕共同回應事件,所以利用傳入值View判斷��哪個��元件來執行不同功能
{
bt[0].setEnabled(false);
bt[1].setEnabled(true);
bt[2].setEnabled(true);
try
{
mp.prepare();
}
catch(Exception e)
{
}
mp.start();
}
else if(v == bt[1])
{
if(mp.isPlaying())
{
bt[0].setEnabled(false);
bt[1].setEnabled(true);
bt[2].setEnabled(true);
mp.pause();
}
else
{
bt[0].setEnabled(false);
bt[1].setEnabled(true);
bt[2].setEnabled(true);
mp.start();
}
}
else if(v == bt[2])
{
bt[0].setEnabled(true);
bt[1].setEnabled(false);
bt[2].setEnabled(false);
mp.pause();
mp.seekTo(0);
}
}
}
}