当前位置: 代码迷 >> BlackBerry >> Blackberry下实现文字滚动效果
  详细解决方案

Blackberry下实现文字滚动效果

热度:3332   发布时间:2013-02-26 00:00:00.0
Blackberry上实现文字滚动效果
如果文字太长 又不想换行的话 可以用文字滚动效果。
下面是代码:
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);			}		}	};


Demo工程也上传吧
1 楼 女巫の微笑 2010-03-04  
谢谢  真是帮忙了
2 楼 doll 2010-03-07  
女巫の微笑 写道
谢谢  真是帮忙了

能帮你我很高兴 不用客气
3 楼 michael_wang 2010-10-11  
留个脚印 
  相关解决方案