`
wuhua
  • 浏览: 2114346 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于UI组件,上下滚动,平滑滚动的技术实现探讨

 
阅读更多

文章出处

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数字上下滚动(积分效果)

    总之,Android数字上下滚动效果的实现涉及自定义View、动画、事件处理等多个方面,而"NumberWheel"组件可能是实现这一效果的便捷工具。通过理解组件的工作原理和解决运行时的错误,我们可以创建出高效、美观的数字...

    SwiftUI实现图片轮播器SwiftUIBanner

    在这个标题为"SwiftUI实现图片轮播器SwiftUIBanner"的话题中,我们将深入探讨如何使用SwiftUI来创建一个功能完备的图片轮播组件。 首先,我们需要了解SwiftUI的基本概念。SwiftUI通过声明式的编程方式让开发者定义...

    Unity UGUI数字滚动

    2. **自定义UI组件**:除了使用标准的Text组件外,还可以创建一个自定义的UI行为,如继承自Unity的MaskableGraphic类,来实现更复杂的滚动效果。这允许你对渲染过程进行更精细的控制,例如逐位滚动数字、添加过渡...

    UI带无限滚动功能,调整content的高度即可。

    下面我们将详细探讨如何在Unity中实现UI无限滚动功能,并根据提供的`scroll.unitypackage`文件,推测其可能包含的相关资源和实现方法。 首先,我们需要理解Unity中的Scroll View组件。Scroll View是Unity UI系统的...

    Unity3D中ui弧形轮番旋转(UI 3D旋转)

    本教程将聚焦于“Unity3D中UI弧形轮番旋转”这一技术,旨在实现类似《英雄联盟》中选择皮肤时的3D滚动视图效果。这个效果不仅增加了界面的动态感,还为用户提供了一种独特的方式来浏览和选择内容。我们将会探讨如何...

    jQuery UI 实现拖动滑块控制图片滚动(效果超酷)

    在本文中,我们将深入探讨如何使用jQuery UI库来实现一个独特的功能:通过拖动滑块控制图片滚动。这种效果在网页设计中可以增加互动性和用户体验,尤其适用于展示一系列图像或创建动态相册。jQuery UI是一个强大的...

    jQueryUI实现拖动滑块控制图片滚动效果

    本文将深入探讨如何使用 jQuery UI 实现拖动滑块来控制图片滚动的效果,这一效果常见于各种多媒体展示和交互式设计中。我们将通过五个小例子逐步解析实现过程,帮助你掌握这一实用技巧。 ### 1. 引入必要的库 首先...

    实现RecyclerView无限自动循环滚动

    在Android开发中,RecyclerView是一个非常重要的...这个过程需要对Android的UI组件和数据处理有深入的理解,同时也提供了优化用户体验的机会。通过这样的实践,开发者可以更好地掌握Android应用的复杂视图交互设计。

    438js_HTML手机电脑网站_网页源码移动端前端js效果_H5模板_自适应css源码ui组件.zip

    这个名为"438js_HTML手机电脑网站_网页源码移动端前端js效果_H5模板_自适应css源码ui组件.zip"的压缩包文件,包含了一系列关于手机和电脑网站的源码,旨在展示如何通过这些技术创建具有响应式设计和动态功能的H5模板...

    上下滚动btn.zip

    在iOS开发中,创建一个具有公告功能的UI组件是一项常见的任务。这个名为"上下滚动btn.zip"的资源包提供了一个基于UIButton控件实现的“小喇叭”公告功能,该功能带有跑马灯效果,可以实现内容的上下翻页。下面我们将...

    安卓仿淘宝头条数据上下自动滚动

    总的来说,实现“安卓仿淘宝头条数据上下自动滚动”需要掌握Android UI组件、数据加载与解析、动画效果、网络请求以及良好的编程实践。通过不断学习和实践,开发者能够创建出功能丰富、用户体验优秀的安卓应用。

    自定义ViewGroup实现垂直滚动

    这个方法会在绘制过程中被调用,可以用来执行平滑滚动。 博客中提到的VerticalLinearLayout可能是一个自定义的ViewGroup,继承自LinearLayout,并实现了上述的滚动功能。它可能重写了LinearLayout的默认行为,使得...

    1269js_HTML手机电脑网站_网页源码移动端前端js效果_H5模板_自适应css源码ui组件.zip

    本文将深入探讨“1269js_HTML手机电脑网站_网页源码移动端前端js效果_H5模板_自适应css源码ui组件.zip”这一压缩包中的关键知识点,包括HTML5模板、前端JS效果、CSS自适应布局以及UI组件的设计。 首先,HTML5模板是...

    数字随机滚动

    例如,如果数字滚动速度很快,可以考虑减少每一帧的更新频率,或者使用缓动函数来平滑滚动过程,减少CPU负担。 9. **打包与发布**: 完成项目后,Unity提供了一键打包功能,将项目编译为可执行文件。在这个例子中...

    unity的UGUI相册滚动效果

    这些可以通过Text、Slider或其他UI组件来实现。同时,为了实现更好的用户体验,我们可以添加过渡动画,如Fade In/Fade Out,使用Animator组件和Transition Animation控制器来管理。 总的来说,"Unity的UGUI相册滚动...

    文本上下滚动

    总的来说,实现文本上下滚动的效果涉及到对Android UI框架的理解,包括自定义View、绘图、动画以及事件处理。通过以上介绍的方法,开发者可以根据项目需求选择适合的实现方式。在实践中,记得进行性能优化,确保滚动...

    react-基于react的自定义滚动条组件

    4. **自定义滚动逻辑**:如果需要更复杂的滚动行为(如平滑滚动),我们可能需要编写自己的滚动逻辑。这可以通过改变容器的`scrollTop`属性并配合`requestAnimationFrame`来实现,以确保平滑过渡。 5. **状态管理**...

    cocoscreator中的自定义数字滚动效果

    本知识点将深入探讨如何利用Cocos Creator的特性,结合TypeScript编程语言来实现这样的效果。 首先,我们需要理解Cocos Creator的基本架构。Cocos Creator是一个基于HTML5的2D游戏引擎,它提供了丰富的图形渲染、...

    IOS应用源码Demo-两个图片切换特效:左右切换上下滚动-毕设学习.zip

    在毕业设计中,这样的项目不仅可以展示开发者对iOS UI组件的熟练运用,还能体现他们对用户交互的理解和动画效果的控制。在撰写论文时,可以从以下几个方面进行论述: 1. 动画效果的设计与实现:详细解释左右切换和...

    H378国外_HTML手机电脑网站_网页源码_移动端前端js效果_H5模板_自适应css样式ui组件.zip

    例如,jQuery库可能被用于简化DOM操作,实现平滑的滚动效果;Vue或React等前端框架可能用于构建数据驱动的组件,提升应用的响应速度和性能。 4. **UI组件**: UI组件是用户界面的核心,H378源码中的UI组件可能包括...

Global site tag (gtag.js) - Google Analytics