- 浏览: 5819722 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
很多时候,由于手机屏幕太小,一下子显示不了那么多内容,这个时候就需要通过按键一点一点的显示下面的内容(相当于浏览器中的滚动条的功能)。我做了一个类,能够一点一点的显示内容。其实就是个容器,把内容统统放在容器中,计算全部内容的高度,计算每屏显示的高,每次移动的高度,需要移动的总次数,通过这些量就能确定滚动情况了。
PS:我讨厌C/S架构的程序,原因就是很多问题都要自己去考虑,比如滚动条、文字换行啊什么的。而B/S架构就不需要考虑这种“低级问题”,浏览器帮我们解决了。
如何使用?看下面
只要注意3个地方就可以了。构造函数中需要告诉它内容总高度是多少,每屏显示的高是多少,每按键一次移动的高度是多少,通过这3个参数就能确定滚动情况了。
还有就是在keyPressed和paint中注意调用它的两个方法。
当然在内容过长时,旁边加个滚动条就更好了,改一下Container的paint()方法就可以了。
另外这里显示的都是文字,并且循环了for(int i=0;i<contents.length;i++)很多次,当然没这个必要,万一碰到有图有文字的时候此类也可以用,不过可能需要在container.keyPressed(keyCode);上加些条件罢了。
下面是添加了滚动条之后的类,注意构造函数多了一个变量,用于表示滚动条从哪里开始画:
加了滚动条之后的page:
注意图最右边的滚动条了吗?:)。滚动条颜色大小啊什么的需要自己根据实际情况“改装”,我这个是最简单的画法了,呵呵。
PS:我讨厌C/S架构的程序,原因就是很多问题都要自己去考虑,比如滚动条、文字换行啊什么的。而B/S架构就不需要考虑这种“低级问题”,浏览器帮我们解决了。
import javax.microedition.lcdui.Graphics; import com.tlt.util.Consts; import com.tlt.view.CommonObject; public class Container extends CommonObject { int maxHeight;//内容总高度 int pageHeight;//每屏显示的高 int deltaY;//每次移动的高度 int count;//需要移动的总次数 int index;//当前移动的次数 int offsetY;//向上移动的高度,那么y-offsetY就是开始画的地方 public Container(int maxHeight,int pageHeight,int deltaY){ this.maxHeight=maxHeight; this.pageHeight=pageHeight; this.deltaY=deltaY; count=(maxHeight-pageHeight)/deltaY+1; } public void close() { // TODO Auto-generated method stub } public void init() { // TODO Auto-generated method stub } public void keyPressed(int keyCode) { // TODO Auto-generated method stub switch (keyCode) { case Consts.KEY_UP: if (index > 0) { index--; } break; case Consts.KEY_DOWN: if (index <count) { index++; } break; } } public void keyReleased(int keyCode) { // TODO Auto-generated method stub } public void paint(Graphics g) { // TODO Auto-generated method stub } public void run() { // TODO Auto-generated method stub } public int getMaxHeight() { return maxHeight; } public int getPageHeight() { return pageHeight; } public int getDeltaY() { return deltaY; } public int getCount() { return count; } public int getIndex() { return index; } public int getOffsetY(){ return index*deltaY; } }
如何使用?看下面
import javax.microedition.lcdui.Graphics; import com.tlt.util.Consts; import com.tlt.util.Util; import com.tlt.view.item.Container; public class HelpPage extends CommonObject { AppCanvas appCanvas; String content; String[] contents=null; int x=5; int fontHeight=20; int y;//显示的位置 Container container; public HelpPage(AppCanvas appCanvas){ this.appCanvas=appCanvas; } public void close() { // TODO Auto-generated method stub contents=null; content=null; container=null; } public void init() { // TODO Auto-generated method stub y=titleHeight; content="尊敬的用户,唐路手机彩票网(wap.5bingo.cn) 与唐路彩票网(www.5bingo.cn)投注是同步统一 的, 网站现有用户直接凭用户名和密码登录即可投注, 新用户请按照以下步骤进行投注:" + "|第1步:免费注册成为会员! 并请牢记您的用户名、密码!" + "|第2步:充值!您可以使用支付宝和 财付通手机WAP支付方式充值,也可电脑登录唐路彩票网(www.5bingo.cn) 输入用户名和密码登录后选择网银充值!" + "|第3步:开始投注!登录唐路手机彩票网(wap.5bingo.cn)选择彩种依流程投注!" ; contents=Util.splitString(content, Consts.small_font, Consts.SCREEN_WIDTH-2*x); container=new Container(fontHeight*contents.length,Consts.SCREEN_HEIGHT-2*titleHeight,fontHeight);//这里需要注意!!! } public void keyPressed(int keyCode) { // TODO Auto-generated method stub container.keyPressed(keyCode);//这里需要注意!!! switch (keyCode) { case Consts.KEY_LS: case Consts.KEY_OK: break; case Consts.KEY_RS: appCanvas.setST(Consts.ST_SUBMENU); break; case Consts.KEY_UP: break; case Consts.KEY_DOWN: break; } } public void keyReleased(int keyCode) { // TODO Auto-generated method stub } public void paint(Graphics g) { // TODO Auto-generated method stub int offsetY=container.getOffsetY();//这里需要注意!!! drawContent(g,x,y-offsetY,contents);//一般都是y-offsetY super.drawTopBar(g,0,0,Consts.title); super.drawButtomBar(g,0,Consts.SCREEN_HEIGHT-titleHeight,new String[]{"","返回"}); } public void run() { // TODO Auto-generated method stub } private void drawContent(Graphics g,int x, int y,String[] contents){ g.setColor(0xffffff); for(int i=0;i<contents.length;i++){ g.drawString(contents[i], x, y+i*fontHeight, Graphics.LEFT|Graphics.TOP); } } }
只要注意3个地方就可以了。构造函数中需要告诉它内容总高度是多少,每屏显示的高是多少,每按键一次移动的高度是多少,通过这3个参数就能确定滚动情况了。
还有就是在keyPressed和paint中注意调用它的两个方法。
当然在内容过长时,旁边加个滚动条就更好了,改一下Container的paint()方法就可以了。
另外这里显示的都是文字,并且循环了for(int i=0;i<contents.length;i++)很多次,当然没这个必要,万一碰到有图有文字的时候此类也可以用,不过可能需要在container.keyPressed(keyCode);上加些条件罢了。
下面是添加了滚动条之后的类,注意构造函数多了一个变量,用于表示滚动条从哪里开始画:
import javax.microedition.lcdui.Graphics; import com.tlt.util.Consts; import com.tlt.view.CommonObject; public class Container extends CommonObject { int maxHeight;//内容总高度 int pageHeight;//每屏显示的高 int deltaY;//每次移动的高度 int count;//需要移动的总次数 int index;//当前移动的次数 int offsetY;//向上移动的高度,那么y-offsetY就是开始画的地方 int y;//开始画滚动条的y坐标 public Container(int maxHeight,int pageHeight,int deltaY,int y){ this.maxHeight=maxHeight; this.pageHeight=pageHeight; this.deltaY=deltaY; count=(maxHeight-pageHeight)/deltaY+1; this.y=y; } public void close() { // TODO Auto-generated method stub } public void init() { // TODO Auto-generated method stub } public void keyPressed(int keyCode) { // TODO Auto-generated method stub switch (keyCode) { case Consts.KEY_UP: if (index > 0) { index--; } break; case Consts.KEY_DOWN: if (index <count) { index++; } break; } } public void keyReleased(int keyCode) { // TODO Auto-generated method stub } public void paint(Graphics g) { // TODO Auto-generated method stub drawScrollBar(g); } public void run() { // TODO Auto-generated method stub } public void drawScrollBar(Graphics g){ if(count>0){//内容过长才需要有滚动条 int w=2;//滚动条宽,2个像素 int h; if(pageHeight%count==0){//修正误差 h=pageHeight/(count+1); }else{ h=pageHeight/(count+1)+1; } g.setColor(0x555555); g.fillRect(Consts.SCREEN_WIDTH-w, y, w, pageHeight); g.setColor(0xcccccc); g.fillRect(Consts.SCREEN_WIDTH-w, y+index*h, w, h); } } public int getMaxHeight() { return maxHeight; } public int getPageHeight() { return pageHeight; } public int getDeltaY() { return deltaY; } public int getCount() { return count; } public int getIndex() { return index; } public int getOffsetY(){ return index*deltaY; } }
加了滚动条之后的page:
import javax.microedition.lcdui.Graphics; import com.tlt.util.Consts; import com.tlt.util.Util; import com.tlt.view.item.Container; public class HelpPage extends CommonObject { AppCanvas appCanvas; String content; String[] contents=null; int x=5; int fontHeight=20; int y;//显示的位置 Container container; public HelpPage(AppCanvas appCanvas){ this.appCanvas=appCanvas; } public void close() { // TODO Auto-generated method stub contents=null; content=null; container=null; } public void init() { // TODO Auto-generated method stub y=titleHeight; content="尊敬的用户,唐路手机彩票网(wap.5bingo.cn) 与唐路彩票网(www.5bingo.cn)投注是同步统一 的, 网站现有用户直接凭用户名和密码登录即可投注, 新用户请按照以下步骤进行投注:" + "|第1步:免费注册成为会员! 并请牢记您的用户名、密码!" + "|第2步:充值!您可以使用支付宝和 财付通手机WAP支付方式充值,也可电脑登录唐路彩票网(www.5bingo.cn) 输入用户名和密码登录后选择网银充值!" + "|第3步:开始投注!登录唐路手机彩票网(wap.5bingo.cn)选择彩种依流程投注!" ; contents=Util.splitString(content, Consts.small_font, Consts.SCREEN_WIDTH-2*x); // container=new Container(fontHeight*contents.length,Consts.SCREEN_HEIGHT-2*titleHeight,fontHeight); container=new Container(fontHeight*contents.length,Consts.SCREEN_HEIGHT-2*titleHeight,fontHeight,y);//注意加了y参数,滚动条从titleHeight开始画 } public void keyPressed(int keyCode) { // TODO Auto-generated method stub container.keyPressed(keyCode); switch (keyCode) { case Consts.KEY_LS: case Consts.KEY_OK: break; case Consts.KEY_RS: appCanvas.setST(Consts.ST_SUBMENU); break; case Consts.KEY_UP: break; case Consts.KEY_DOWN: break; } } public void keyReleased(int keyCode) { // TODO Auto-generated method stub } public void paint(Graphics g) { // TODO Auto-generated method stub int offsetY=container.getOffsetY(); drawContent(g,x,y-offsetY,contents); container.paint(g);//别忘了画滚动条 super.drawTopBar(g,0,0,Consts.title); super.drawButtomBar(g,0,Consts.SCREEN_HEIGHT-titleHeight,new String[]{"","返回"}); } public void run() { // TODO Auto-generated method stub } private void drawContent(Graphics g,int x, int y,String[] contents){ g.setColor(0xffffff); for(int i=0;i<contents.length;i++){ g.drawString(contents[i], x, y+i*fontHeight, Graphics.LEFT|Graphics.TOP); } } }
注意图最右边的滚动条了吗?:)。滚动条颜色大小啊什么的需要自己根据实际情况“改装”,我这个是最简单的画法了,呵呵。
发表评论
-
3个RPG练习,最后一个是卡马克卷轴
2010-12-11 18:02 2361import javax.microedition.lcd ... -
j2me小练习,教学用
2010-12-07 20:42 1844有用的J2ME功能函数 ... -
自己早期做的一个基于j2me的飞行射击类游戏
2010-12-07 20:23 2130早期的代码,MVC思想 -
自己早期做的一个基于j2me的魔塔
2010-12-07 20:13 2102上面一个不完整,但代码好(MVC),但没抽出类; 下面一个比 ... -
j2me中的A*算法
2010-12-02 14:08 2065import javax.microedition.mid ... -
j2me代理连接返回码总是400的问题
2010-09-21 16:24 2769400是因为错误的语法导致服务器无法理解请求信息。 Con ... -
j2me读取中文的配置文件
2010-09-14 20:25 2166还可以参考这篇文章: http://gundumw100.it ... -
使用jsr172解析xml
2010-09-14 10:40 1963基类: import java.io.ByteArrayI ... -
面向对象的RMS操作
2010-09-14 10:29 1715将需要保存的数据集中起来形成一个model类,并且要实现序列化 ... -
Java版数独算法实现
2010-09-10 16:32 16360数独的历史: 数独前身为“九宫格”,最早起源于中国。数千 ... -
使用KXML解析xml数据
2010-09-10 13:05 9335最近做项目,服务器传过来的都是Xml格式的数据,需要解析xml ... -
类似小球列表的选择控件(9宫格)
2010-08-27 15:50 1763import javax.microedition.lcd ... -
j2me工具类:TextUtil.java
2010-08-11 21:24 1710import java.util.Vector; i ... -
j2me工具类:Database.java
2010-08-11 21:18 2023/** * <p>Title: & ... -
j2me工具类:ReadFromFile.java
2010-08-11 21:15 4340import java.io.*; import jav ... -
j2me竖向滚动菜单的基本做法
2010-08-11 16:58 2031public class AppCanvas extend ... -
j2me工具类:声音播放类SoundUtil
2010-06-04 23:21 2134用法: 将需要播放的音乐都罗列在name,type数组中,需要 ... -
j2me工具类:PalettedImage调色板类
2010-06-04 22:57 1807该方法网上可以找到,我添加了一个重载函数: public Im ... -
地图编辑器Mappy下载
2010-05-25 22:30 3331简单的手机游戏地图编辑器,共享之。。。 eclipseme下 ... -
将Image对像转换为png格式的byte数组
2010-04-15 12:48 2626原理上说 1 获取Image 的ARGB数据 2将ARGB ...
相关推荐
在这种滚屏特效中,选项卡可能被用来组织页面的不同部分,当用户滚动时,每个选项卡的内容会按顺序展示出来,提供了一种高效的内容导航方式。 在【压缩包子文件的文件名称列表】中,只有一个文件名为"jiaoben18698...
自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏按钮.rar自动滚屏...
滚屏截图工具是一种实用的计算机软件,主要用于捕捉屏幕上的长幅内容,比如网页、文档或者聊天记录等。在日常工作中,我们经常会遇到需要截取整个页面而非单一屏幕的情况,这时滚屏截图工具就显得尤为方便。它允许...
内容自动向上滚屏显示
这可以通过Java的`java.util.Timer`类或者Android的`Handler`和`Runnable`实现。 4. **广告加载与展示**: - 使用AdMob API加载广告,可能涉及到异步请求,需要处理加载成功、失败、空闲(No填充)等多种状态。 -...
Android应用源码之广告自动滚屏播放应用.zip项目安卓应用源码下载Android应用源码之广告自动滚屏播放应用.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
在Android平台上,开发一款广告自动滚屏播放应用是一项常见的任务,尤其对于那些希望在移动设备上展示广告内容的开发者来说。这个"广告自动滚屏播放应用"源码提供了一个很好的学习资源,帮助开发者深入理解如何在...
【小程序源码 广告自动滚屏播放应用】 在当今移动互联网时代,小程序因其轻量化、便捷性成为了众多企业和开发者的选择。"小程序源码 广告自动滚屏播放应用.zip"是一个专门针对小程序开发的广告展示解决方案,它利用...
广告自动滚屏播放应用.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
数据显示,互联网用户有相当一部分时间花在了滚屏上,因此,优化滚动体验对于任何网站都是至关重要的。 总的来说,产品设计中的滚屏与分页选择是一个需要综合考虑用户需求、任务特性和设备兼容性的决策。设计师应...
标题中的“广告自动滚屏播放应用”暗示了这个压缩包可能包含一个软件或者代码库,用于实现自动滚动播放广告的功能。这种技术在数字媒体、广告行业以及网站设计中较为常见,目的是吸引用户的注意力并提高广告的曝光率...
4. **定时滚动**:使用Handler或CountDownTimer来实现定时滚动效果,定期更新显示的广告内容。 5. **动画效果**:为了实现平滑的滚动效果,可能需要用到Android的动画框架,如ObjectAnimator或Transition API。 6....
在安卓(Android)平台上开发应用时,源码的掌握对于开发者来说至关重要,特别是涉及到特定功能如广告自动滚屏播放的应用。这个"安卓Andriod源码——广告自动滚屏播放应用.zip"提供了一个完整的示例,帮助我们了解...
在Android平台上,开发一款广告自动滚屏播放应用是一项常见的任务,尤其对于那些希望在移动设备上展示广告内容的开发者来说。这个"Android高级应用源码-广告自动滚屏播放应用.zip"提供了一个实用的示例,它展示了...
在安卓(Android)平台上开发应用程序时,有时我们需要实现广告的自动滚屏播放功能,以吸引用户的注意力并提高广告的曝光率。本项目“安卓Android源码——广告自动滚屏播放应用.zip”提供了一个完整的实现方案,它...
在Android平台上,开发一款广告自动滚屏播放应用是一项常见的任务,尤其对于那些希望在应用程序中嵌入广告以增加收入的开发者来说。这个压缩包“Android应用源码之广告自动滚屏播放应用.rar”可能包含了一个完整的...