欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

blackberry下实现文字滚动效果

更新时间: 2014-01-05 02:42:14 责任编辑: Author_N1

 

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工程也上传吧
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:42:14
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13373/
本文WWW.DOC100.NET DOC100.NET版权所有。