package net.oschina.gitapp.widget;
import net.oschina.gitapp.R;
import android.content.Context;
import android.media.MediaPlayer;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
/**
* 新数据Toast提示控件(带音乐播放)
* @author liux (http://my.oschina.net/liux)
* @version 1.0
* @created 2012-8-30
*/
public class NewDataToast extends Toast{
private MediaPlayer mPlayer;
private boolean isSound;
public NewDataToast(Context context) {
this(context, false);
}
public NewDataToast(Context context, boolean isSound) {
super(context);
this.isSound = isSound;
mPlayer = MediaPlayer.create(context, R.raw.newdatatoast);
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
@Override
public void show() {
super.show();
if(isSound){
mPlayer.start();
}
}
/**
* 设置是否播放声音
*/
public void setIsSound(boolean isSound) {
this.isSound = isSound;
}
/**
* 获取控件实例
* @param context
* @param resId 文本资源oid
* @param isSound 是否播放声音
* @return
*/
public static NewDataToast makeText(Context context, int resId, boolean isSound) {
return makeText(context, context.getString(resId), isSound);
}
/**
* 获取控件实例
* @param context
* @param text 提示消息
* @param isSound 是否播放声音
* @return
*/
public static NewDataToast makeText(Context context, CharSequence text, boolean isSound) {
NewDataToast result = new NewDataToast(context, isSound);
LayoutInflater inflate = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
DisplayMetrics dm = context.getResources().getDisplayMetrics();
View v = inflate.inflate(R.layout.new_data_toast, null);
v.setMinimumWidth(dm.widthPixels);//设置控件最小宽度为手机屏幕宽度
TextView tv = (TextView)v.findViewById(R.id.new_data_toast_message);
tv.setText(text);
result.setView(v);
result.setDuration(Toast.LENGTH_SHORT);
//显示最顶部
result.setGravity(Gravity.TOP, 0, 0);
return result;
}
}