文章出处
http://www.3geye.net/bbs/thread-268-1-1.html
关于UI组件,上下滚动,平滑滚动的技术实现探讨
关于UI组件,上下滚动,平滑滚动的技术实现探讨
在我设计的UI中存在的两个问题一直没有解决好
1.是焦点处理机制-- 这个问题已经在前几天我解决了。
2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。
下面我重点老讨论这个问题。希望大家有什么好的想法也说下。分享下经验,让我少走弯路
现在来看看下面的图
假设:图A 为 整个Canvas可以显示的图, 图B为 需要显示的图,
我们来看看这算适合坐滚动设计吗。看看下面的逻辑。现在假设HA为A的高度, HB为B的高度,ScrollH表示滚动条的高度。进度条的位置为ScrollY,系统滚动的增量为regionY
1. 如果A的高度> B的高度,则不需要滚动
2. 如果A的高度<B的高度,则需要进行滚动处理。
下面是算法比例ScrollH/HA = HA/HB è ScrollH=HA*HA/HB;
得到当前进度条的位置是 ScrollY/HA = regionY/HB è ScrollY=regionY*HA/HB
当调用keyPressed事件的时候处理regionY; è down:rgionY -= 30; up:region += 30;
然后自动更新ScrollY ;最后调用repaint();
上面是算法模型,现在来看下我的具体实现,希望大家对这个模型多多批评,看看还有没有更好的算法实现。
在调式的过程中遇到一个很特别的问题,居然public void keyPressed(int keyCode)没有任何响应。哈哈,是我眼花,原来是采用了print的方法,所以没仔细看,看不到输出。郁闷啊
经过测试,此路完全是走的通的,现在看看代码是怎么实现的,我知识对字符串进行简单的处理实现,对于更复杂的UI组件,原理差不错。不过要做下小修改
import javax.microedition.lcdui.*;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2007</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class TestCanvas extends Canvas {
private String text="关关于UI组件,上下滚动,平滑滚动的视线技术探讨在我设计的UI中存在的两个问题一直没有解决好1.是焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部 "+
"分问题,但是另外一部分问题又冒出来了。下面我重点老讨论这个问题。希望大家有什么好的想法也说下。分享下经验,让我少走弯路关于UI组件,上下滚动, 平滑滚动的视线技术探讨在我设计的UI中存在的两个问题一直没有解决好1.是焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下面 我重点老讨论这个问题。希望大家有什么好的想法也说下。分享下经验,让我少走弯路于UI组件,上下滚动,平滑滚动的视线技术探讨在我设计的UI中存在的两 个问题一直没有解决好1.是焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下面 我重点老讨论这个问题。希望大家有什么好的想法也说下。分享下经验,让我少走弯路sdf" +
"是焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下是 焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下是 焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下是 焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下是 焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下是 焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下是 焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下是 焦点处理机制-- 这个问题已经在前几天我解决了。2.就是上下滚动,平滑滚动,触摸屏滚动,实现的不是很到。虽然是解决了一部分问题,但是另外一部分问题又冒出来了。下 ";
private int sreenWidth;
private int sreenHeight;
private int scrollHeight;
private int scrollY;
private int regionY;
private int numHeight;
public TestCanvas() {
try {
this.setFullScreenMode(true);
this.sreenHeight = this.getHeight();
this.sreenWidth = this.getWidth();
}
catch(Exception e) {
e.printStackTrace();
}
}
protected void paint(Graphics g) {
g.setColor(0xFFFFFF);
g.fillRect(0,0,this.sreenWidth, this.sreenHeight);
char[] chars = text.toCharArray();
int h = 0;
int w = 0;
Font font = g.getFont();
g.setColor(0x00000);
for(int i=0; i<text.length(); i++){
if(w > this.sreenWidth - 18){
h += font.getHeight();
w = 0;
}
g.drawChar(chars,w, h + this.regionY, Graphics.TOP | Graphics.LEFT);
w += font.charWidth(chars);
}
if(this.numHeight == 0)
this.numHeight = h+font.getHeight();
this.scrollHeight = this.sreenHeight * this.sreenHeight/numHeight;
this.scrollY = (-this.regionY)*this.sreenHeight/numHeight;
g.setColor(255);
g.fillRect(this.sreenWidth-6,0, 6, this.sreenHeight);
g.setColor(0xFFFFFF);
g.fillRect(this.sreenWidth-5,this.scrollY, 4, this.scrollHeight);
}
public void keyPressed(int keyCode) {
System.out.println(keyCode);
if(keyCode == -2){
if(this.sreenHeight - this.regionY > this.numHeight)
return;
this.regionY -= 30;
}
else if (keyCode == -1){
if(this.regionY>=0)
return;
this.regionY += 30;
}
this.repaint();
}
}
nE(r7SO3
分享到:
相关推荐
总之,Android数字上下滚动效果的实现涉及自定义View、动画、事件处理等多个方面,而"NumberWheel"组件可能是实现这一效果的便捷工具。通过理解组件的工作原理和解决运行时的错误,我们可以创建出高效、美观的数字...
在这个标题为"SwiftUI实现图片轮播器SwiftUIBanner"的话题中,我们将深入探讨如何使用SwiftUI来创建一个功能完备的图片轮播组件。 首先,我们需要了解SwiftUI的基本概念。SwiftUI通过声明式的编程方式让开发者定义...
2. **自定义UI组件**:除了使用标准的Text组件外,还可以创建一个自定义的UI行为,如继承自Unity的MaskableGraphic类,来实现更复杂的滚动效果。这允许你对渲染过程进行更精细的控制,例如逐位滚动数字、添加过渡...
下面我们将详细探讨如何在Unity中实现UI无限滚动功能,并根据提供的`scroll.unitypackage`文件,推测其可能包含的相关资源和实现方法。 首先,我们需要理解Unity中的Scroll View组件。Scroll View是Unity UI系统的...
本教程将聚焦于“Unity3D中UI弧形轮番旋转”这一技术,旨在实现类似《英雄联盟》中选择皮肤时的3D滚动视图效果。这个效果不仅增加了界面的动态感,还为用户提供了一种独特的方式来浏览和选择内容。我们将会探讨如何...
在本文中,我们将深入探讨如何使用jQuery UI库来实现一个独特的功能:通过拖动滑块控制图片滚动。这种效果在网页设计中可以增加互动性和用户体验,尤其适用于展示一系列图像或创建动态相册。jQuery UI是一个强大的...
本文将深入探讨如何使用 jQuery UI 实现拖动滑块来控制图片滚动的效果,这一效果常见于各种多媒体展示和交互式设计中。我们将通过五个小例子逐步解析实现过程,帮助你掌握这一实用技巧。 ### 1. 引入必要的库 首先...
在Android开发中,RecyclerView是一个非常重要的...这个过程需要对Android的UI组件和数据处理有深入的理解,同时也提供了优化用户体验的机会。通过这样的实践,开发者可以更好地掌握Android应用的复杂视图交互设计。
这个名为"438js_HTML手机电脑网站_网页源码移动端前端js效果_H5模板_自适应css源码ui组件.zip"的压缩包文件,包含了一系列关于手机和电脑网站的源码,旨在展示如何通过这些技术创建具有响应式设计和动态功能的H5模板...
在iOS开发中,创建一个具有公告功能的UI组件是一项常见的任务。这个名为"上下滚动btn.zip"的资源包提供了一个基于UIButton控件实现的“小喇叭”公告功能,该功能带有跑马灯效果,可以实现内容的上下翻页。下面我们将...
总的来说,实现“安卓仿淘宝头条数据上下自动滚动”需要掌握Android UI组件、数据加载与解析、动画效果、网络请求以及良好的编程实践。通过不断学习和实践,开发者能够创建出功能丰富、用户体验优秀的安卓应用。
这个方法会在绘制过程中被调用,可以用来执行平滑滚动。 博客中提到的VerticalLinearLayout可能是一个自定义的ViewGroup,继承自LinearLayout,并实现了上述的滚动功能。它可能重写了LinearLayout的默认行为,使得...
本文将深入探讨“1269js_HTML手机电脑网站_网页源码移动端前端js效果_H5模板_自适应css源码ui组件.zip”这一压缩包中的关键知识点,包括HTML5模板、前端JS效果、CSS自适应布局以及UI组件的设计。 首先,HTML5模板是...
例如,如果数字滚动速度很快,可以考虑减少每一帧的更新频率,或者使用缓动函数来平滑滚动过程,减少CPU负担。 9. **打包与发布**: 完成项目后,Unity提供了一键打包功能,将项目编译为可执行文件。在这个例子中...
这些可以通过Text、Slider或其他UI组件来实现。同时,为了实现更好的用户体验,我们可以添加过渡动画,如Fade In/Fade Out,使用Animator组件和Transition Animation控制器来管理。 总的来说,"Unity的UGUI相册滚动...
总的来说,实现文本上下滚动的效果涉及到对Android UI框架的理解,包括自定义View、绘图、动画以及事件处理。通过以上介绍的方法,开发者可以根据项目需求选择适合的实现方式。在实践中,记得进行性能优化,确保滚动...
4. **自定义滚动逻辑**:如果需要更复杂的滚动行为(如平滑滚动),我们可能需要编写自己的滚动逻辑。这可以通过改变容器的`scrollTop`属性并配合`requestAnimationFrame`来实现,以确保平滑过渡。 5. **状态管理**...
本知识点将深入探讨如何利用Cocos Creator的特性,结合TypeScript编程语言来实现这样的效果。 首先,我们需要理解Cocos Creator的基本架构。Cocos Creator是一个基于HTML5的2D游戏引擎,它提供了丰富的图形渲染、...
在毕业设计中,这样的项目不仅可以展示开发者对iOS UI组件的熟练运用,还能体现他们对用户交互的理解和动画效果的控制。在撰写论文时,可以从以下几个方面进行论述: 1. 动画效果的设计与实现:详细解释左右切换和...
例如,jQuery库可能被用于简化DOM操作,实现平滑的滚动效果;Vue或React等前端框架可能用于构建数据驱动的组件,提升应用的响应速度和性能。 4. **UI组件**: UI组件是用户界面的核心,H378源码中的UI组件可能包括...