Blackberry上实现文字滚动效果
2010-10-10 15:01
309 查看
博主doll还写了几篇BlackBerry开发的小文档,相当实用,感谢!
原文:
http://doll.javaeye.com/blog/569457
LabelField testLabel = new LabelField(
"I swear to god up in the sky I will be your shelter when you cry Cause you are my everything.",
Field.FOCUSABLE) {
int currentChar = 0;
String currentText = null;
Font ourFont;
private Timer _scrollTimer;
private TimerTask _scrollTimerTask;
protected void paint(Graphics graphics) {
currentText = this.getText();
if (currentChar < currentText.length()) {
currentText = currentText.substring(currentChar);
}
graphics.drawText(currentText, 0, 0, DrawStyle.ELLIPSIS, Display
.getWidth());
}
protected void layout(int width, int height) {
ourFont = this.getFont();
setExtent(Display.getWidth(), ourFont.getHeight());
}
protected void onDisplay() {
startScroll();
}
protected void onUnfocus() {
startScroll();
}
private void startScroll() {
// Start scrolling
final String fullText = this.getText();
if (_scrollTimer == null) {
_scrollTimer = new Timer();
_scrollTimerTask = new TimerTask() {
public void run() {
currentChar = currentChar + 4;
if (currentChar > fullText.length()) {
currentChar = 0;
}
invalidate();
}
};
_scrollTimer.scheduleAtFixedRate(_scrollTimerTask, 500, 500);
}
}
protected void onFocus(int direction) {
if (_scrollTimer != null) {
_scrollTimerTask.cancel();
_scrollTimer.cancel();
_scrollTimer = null;
_scrollTimerTask = null;
}
}
protected boolean navigationMovement(int dx, int dy, int status,
int time) {
currentText = this.getText();
int oldCurrentChar = currentChar;
if (Math.abs(dx) > Math.abs(dy)) {
// horizontal scroll
if (dx > 0) {
currentChar = Math.min(currentText.length() - 1,
currentChar + 1);
} else if (dx < 0) {
currentChar = Math.max(0, currentChar - 1);
}
if (oldCurrentChar != currentChar) {
this.invalidate();
}
return true;
} else {
return super.navigationMovement(dx, dy, status, time);
}
}
};
原文:
http://doll.javaeye.com/blog/569457
LabelField testLabel = new LabelField(
"I swear to god up in the sky I will be your shelter when you cry Cause you are my everything.",
Field.FOCUSABLE) {
int currentChar = 0;
String currentText = null;
Font ourFont;
private Timer _scrollTimer;
private TimerTask _scrollTimerTask;
protected void paint(Graphics graphics) {
currentText = this.getText();
if (currentChar < currentText.length()) {
currentText = currentText.substring(currentChar);
}
graphics.drawText(currentText, 0, 0, DrawStyle.ELLIPSIS, Display
.getWidth());
}
protected void layout(int width, int height) {
ourFont = this.getFont();
setExtent(Display.getWidth(), ourFont.getHeight());
}
protected void onDisplay() {
startScroll();
}
protected void onUnfocus() {
startScroll();
}
private void startScroll() {
// Start scrolling
final String fullText = this.getText();
if (_scrollTimer == null) {
_scrollTimer = new Timer();
_scrollTimerTask = new TimerTask() {
public void run() {
currentChar = currentChar + 4;
if (currentChar > fullText.length()) {
currentChar = 0;
}
invalidate();
}
};
_scrollTimer.scheduleAtFixedRate(_scrollTimerTask, 500, 500);
}
}
protected void onFocus(int direction) {
if (_scrollTimer != null) {
_scrollTimerTask.cancel();
_scrollTimer.cancel();
_scrollTimer = null;
_scrollTimerTask = null;
}
}
protected boolean navigationMovement(int dx, int dy, int status,
int time) {
currentText = this.getText();
int oldCurrentChar = currentChar;
if (Math.abs(dx) > Math.abs(dy)) {
// horizontal scroll
if (dx > 0) {
currentChar = Math.min(currentText.length() - 1,
currentChar + 1);
} else if (dx < 0) {
currentChar = Math.max(0, currentChar - 1);
}
if (oldCurrentChar != currentChar) {
this.invalidate();
}
return true;
} else {
return super.navigationMovement(dx, dy, status, time);
}
}
};
相关文章推荐
- 一个jquery实现的不错的多行文字图片滚动效果
- 借助JQ简单的实现文字滚动效果
- js实现的单行文本不间断无缝滚动效果(荧光屏文字 滚动效果)
- Android 文字自动滚动(跑马灯)效果的两种实现方法
- js实现文字垂直滚动和鼠标悬停效果
- IOS跑马灯效果,实现文字水平无间断滚动
- jquery实现文字上下滚动效果
- Marquee配合DIV实现的文字滚动效果代码
- jquery xMarquee实现文字水平无缝滚动效果
- JS实现title标题栏文字不间断滚动显示效果
- jQuery文字横向滚动效果的实现代码
- Android 文字自动滚动(跑马灯)效果的两种实现方法[特别好使]
- Marquee配合DIV实现的文字滚动效果代码
- js实现文字滚动效果
- JQuery实现文字无缝滚动效果示例代码(Marquee插件)
- 基于javascript实现文字无缝滚动效果
- Javascript实现浏览器标题栏文字滚动效果
- 实现上下文字滚动的效果
- Js 实现文字爬楼滚动效果 结合文本框