?? playerui.java
字號:
package com.wootion.ui;
import java.io.IOException;
import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.media.MediaException;
import com.wootion.control.Parameter;
import com.wootion.mainMidlet.MainMidlet;
import com.wootion.player.MusicPlayer;
import com.wootion.rms.PlayListBean;
import com.wootion.rms.PlayListRMS;
public class PlayerUI extends Canvas implements Runnable {
Image bgImage, playbut1, playbut2, voice; // 圖片
int x;
int y;
int selected = 0;// 被選中的列表下表從0開始
int index; // 頁數(shù)
int position = 43;// 列表初始位置
int intvol = 0;// 音量圖片顯示位置
int showL = 6;// 列表顯示字個數(shù)
int showR = 4;// 滾動字顯示個數(shù)
int sub = 0; // 控制滾動
// 快進(jìn)、退
long pTime;
// 播放總時間
long tTime;
public int showPlayControl;
// 初始聲音大小
int volumn = 50;
// 調(diào)節(jié)聲音間隔
int flag = 13;
// 確定之間的數(shù)字切換:范圍0到1
public static int confirmflag = 0;
private String[] list;// = { "1.童話", "2.愛在西元前", "3.一千個傷心的理由", "4.牛仔很忙",
// "5.青花瓷", "6.雪花" };
final Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_SMALL); // 字體
// 歌曲vector
Vector vector = new Vector();
// 數(shù)字vector
Vector vc = new Vector();
PlayListRMS plrms = new PlayListRMS();
PlayListBean[] playlist = {};
// 選擇皮膚
int skin;
public MusicPlayer musicPlayer = new MusicPlayer();
public int getShowPlayControl() {
return showPlayControl;
}
public void setShowPlayControl(int showPlayControl) {
this.showPlayControl = showPlayControl;
}
public PlayerUI() {
musicPlayer.setDis(this);
this.setFullScreenMode(true);
x = getWidth();
y = getHeight();
//讀取參數(shù)設(shè)置 播放順序、皮膚
int pc = plrms.getPRecordValue(Parameter.pRms, Parameter.pcid);
if(pc != -1){
Parameter.playControl = pc;
}
int sk = plrms.getPRecordValue(Parameter.pRms, Parameter.skid);
if(sk != -1){
Parameter.skin = sk;
}
initialize();
new Thread(this).start();
}
/**
*
* <b>方法描述:</b></br>     初始化播放列表</br>
*/
public void initialize() {
skin = Parameter.skin;
try {
bgImage = Image.createImage("/res/player" + skin + ".png");
playbut1 = Image.createImage("/res/but1.png");
playbut2 = Image.createImage("/res/but2.png");
voice = Image.createImage("/res/2.png");
}
catch (IOException e) {
e.printStackTrace();
}
playlist = plrms.getRecords("playlistdb");
plrms.openRS("playlistdb");
int total = plrms.getNumOfRecords();
if (total == index) {
index = total - 1;
}
if (selected <= 0) {
selected = 0;
}
musicPlayer.setMTotal(total);
musicPlayer.setVTotal(total);
if (vc != null) {
vc.removeAllElements();
}
for (int i = 1; i < total + 1; i++) {
vc.addElement(String.valueOf(i));
}
musicPlayer.setVector(vc);
plrms.closeRS();
if (vector != null) {
vector.removeAllElements();
}
for (int i = 0; i < playlist.length; i++) {
PlayListBean plb = playlist[i];
Integer x = new Integer(plb.getIndex());
String strindex = x.toString();
String dot = ".";
String musicName = plb.getMusicName();
String a = strindex.concat(dot);
a = a.concat(musicName);
vector.addElement(a);
}
list = new String[vector.size()];
if (vector.size() != 0) {
for (int i = 0; i < vector.size(); i++) {
list[i] = (String) vector.elementAt(i);
}
}
}
private void paintList(Graphics g) {
if (vector.size() != 0) {
int it = list.length - 6;
if (it <= 0) {
g.setColor(250, 90, 150);
g.fillRect(3, position + font.getHeight() * selected,
84, font.getHeight());
for (int i = 0; i < list.length; i++) {
g.setColor(255, 255, 255);
if (list[i].length() > showL) {
g.drawSubstring(list[i], 0, showL, 5, position
+ font.getHeight() * i, Graphics.LEFT
| Graphics.TOP);
}
else {
g.drawString(list[i], 5, position
+ font.getHeight() * i, Graphics.LEFT
| Graphics.TOP);
}
}
// 下拉條
g.setColor(121, 122, 123);
g.fillRect(92, position + selected * 6 * font.getHeight()
/ list.length, 6, 6 * font.getHeight() / list.length);
}
if (it > 0) {
int page = index - selected;
g.setColor(250, 90, 150);
g.fillRect(3, position + font.getHeight() * selected,
84, font.getHeight());
for (int i = page; i < page + 6; i++) {
g.setColor(255, 255, 255);
if (list[i].length() > showL) {
g.drawSubstring(list[i], 0, showL, 5, position
+ font.getHeight() * (i - page),
Graphics.LEFT | Graphics.TOP);
}
else {
g.drawString(list[i], 5, position
+ font.getHeight() * (i - page),
Graphics.LEFT | Graphics.TOP);
}
}
// 下拉條
g.setColor(121, 122, 123);
g.fillRect(92, position + index * 6 * font.getHeight()
/ list.length, 6, 6 * font.getHeight() / list.length);
}
}
}
protected void paint(Graphics g) {
g.setFont(font);
g.fillRect(0, 0, x, y);
g.drawImage(bgImage, 0, 0, Graphics.LEFT | Graphics.TOP);
if (confirmflag == 0) {
g.drawImage(playbut1, 101, 110, Graphics.LEFT | Graphics.TOP);
}
if (confirmflag == 1) {
g.drawImage(playbut2, 101, 110, Graphics.LEFT | Graphics.TOP);
}
g.drawImage(voice, 40 + intvol, 165, Graphics.LEFT | Graphics.TOP);
g.setColor(255, 255, 255);
paintList(g);
g.setColor(250, 90, 150);
String str = Parameter.songName;
if (str.length() > showR) {
if (str.length() - sub < showR) {
showR = str.length() - sub + 1;
showR -= 1;
if (showR <= 0) {
showR = 4;
sub = 0;
}
}
g.drawSubstring(str, sub, showR, 105, position + 5, Graphics.LEFT
| Graphics.TOP);
}
else {
g.drawString(str, 105, position + 5, Graphics.LEFT | Graphics.TOP);
}
g.drawString("模式:", 105, position + font.getHeight() + 10,
Graphics.LEFT | Graphics.TOP);
g.drawString(Parameter.showPC(Parameter.playControl), 105, position
+ font.getHeight() * 2 + 10, Graphics.LEFT | Graphics.TOP);
g.setColor(255, 255, 255);
if (musicPlayer.player != null) {
long ptime = musicPlayer.player.getMediaTime();
pTime = ptime;
long ttime = musicPlayer.player.getDuration();
tTime = ttime;
g.drawString(timeFM(ptime) + "/" + timeFM(ttime), 105, 160,
Graphics.LEFT | Graphics.TOP);
g.setColor(32, 128, 216);
g.fillRect(4, 184, (int) ((getWidth() - 7) * ptime / ttime), 6);
}
else {
g.drawString("00:00/00:00", 105, 160, Graphics.LEFT | Graphics.TOP);
}
}
// 保持按鍵狀態(tài)
public void keyRepeated(int key) {
if (key == 52 || key == 54) {
keyPressed(key);
}
}
public void keyReleased(int key) {
if (key == 52 || key == 54) {
musicPlayer.playSound();
}
}
public void keyPressed(int key) {
switch (key) {
// Canvas.UP
case -1:
if (vector.size() != 0) {
if (--index < 0) {
index += list.length;
}
if (--selected < 0) {
selected = 0;
}
if(index == list.length -1 ){
if(list.length < 6){
selected += list.length - 1;
}else{
selected = 5;
}
}
}
break;
// Canvas.DOWN
case -2:
if (vector.size() != 0) {
index = (index + 1) % list.length;
selected = (selected + 1) % 6;
if (index > 5) {
selected = 5;
}
if (index == 0) {
selected = 0;
}
// selected = (selected + 1) % list.length;
}
break;
// Canvas.LEFT
case -3:
intvol -= 4;
if (intvol < -16) {
intvol = -16;
}
volumn -= flag;
if (volumn < 0) {
volumn = 0;
}
musicPlayer.setVolumn(volumn);
if (musicPlayer.control != null) {
musicPlayer.control.setLevel(volumn);
}
break;
// Canvas.RIGHT
case -4:
intvol += 4;
if (intvol > 16) {
intvol = 16;
}
volumn += flag;
if (volumn > 100) {
volumn = 100;
}
musicPlayer.setVolumn(volumn);
if (musicPlayer.control != null) {
musicPlayer.control.setLevel(volumn);
}
break;
// Canvas.FIRE
case -5:
musicPlayer.stopPlay();
if (vector.size() != 0) {
musicPlayer.setSelected(index + 1);
musicPlayer.playSound();
}
confirmflag = 1;
break;
// 左軟鍵盤
case -6:
Display.getDisplay(MainMidlet.getInstance()).setCurrent(
new OptionCanvas(this, index + 1));
break;
// 右軟鍵盤
case -7:
Display.getDisplay(MainMidlet.getInstance()).setCurrent(
new ExitForm(this));
break;
case 50:
if (vector.size() != 0) {
if (confirmflag == 1) {
musicPlayer.pauseSound();
}
else {
musicPlayer.playSound();
}
confirmflag = (confirmflag + 1) % 2;
}
break;
case 52:
musicPlayer.pauseSound();
if (pTime > 0) {
pTime -= 5000000;
}
if (pTime < 0) {
pTime = 0;
}
try {
musicPlayer.player.setMediaTime(pTime);
}
catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case 54:
musicPlayer.pauseSound();
if (pTime < tTime) {
pTime += 5000000;
}
if (pTime > tTime) {
pTime = tTime;
}
try {
musicPlayer.player.setMediaTime(pTime);
}
catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case 56:
confirmflag = 0;
musicPlayer.stopPlay();
break;
}
repaint();
}
private String timeFM(long val) {
String ret = "";
int mval = (int) (val / 1000);
int sec = mval / 1000;
int min = sec / 60;
if (min >= 10) {
ret = ret + min + ":";
}
else if (min > 0) {
ret = "0" + min + ":";
}
else {
ret = "00:";
}
if (sec >= 60) {
sec = sec % 60;
}
if (sec >= 10) {
ret = ret + sec;
}
else if (sec > 0) {
ret = ret + "0" + sec;
}
else {
ret = ret + "00";
}
return (ret);
}
public void run() {
while (true) {
try {
Thread.sleep(500);
sub += 1;
repaint();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -