`

BlackBerry Slider

阅读更多

由于BB项目需要,特定制了Sliderbar,BB上没有这个组件,所以只能自己动手。 请看代码 : Java代码 package

  1. package cc.mdev.seek;   
      
    import net.rim.device.api.math.Fixed32;   
    import net.rim.device.api.system.EncodedImage;   
    import net.rim.device.api.ui.Field;   
    import net.rim.device.api.ui.Graphics;   
    import net.rim.device.api.ui.TouchEvent;   
    import net.rim.device.api.ui.TouchGesture;   
    import net.rim.device.api.ui.component.BitmapField;   
    import net.rim.device.api.ui.component.GaugeField;   
    import net.rim.device.api.ui.container.HorizontalFieldManager;   
      
    /**  
     * Seekbar 可以拖动  
     *   
     * @author Wang XinFeng  
     * @site http://mdev.cc  
     *   
     */  
    public class SeekBar2 extends Field {   
        /**  
         * 水平滑動  
         */  
        public static int HORIZONTAL_SLIDE = 0;   
      
        /**  
         * 垂直滑動  
         */  
        public static int VERTICAL_SLIDE = 1;   
      
        /**  
         * 背景图片  
         */  
        private EncodedImage background;   
      
        /**  
         * 整个Field的高宽度  
         */  
        private int width;   
        /**  
         * 整个Field的高度  
         */  
        private int height;   
      
        /**  
         * 可以拖动的Image  
         */  
        private EncodedImage barImage = null;   
      
        /**  
         * x,y的坐标点  
         */  
        private int x = 0, y = 0;   
      
        /**  
         * 拖动时候的监听器  
         */  
        private OnSlideListener listener = null;   
      
        /**  
         * 刻度的最大值  
         */  
        private int maxValue;   
      
        /**  
         * Seekbar  
         *   
         * @param width  
         *            宽度  
         * @param maxValue 刻度最大值  
         * @param barImage  
         *            可拖动的图片  
         * @param background  
         *            背景  
         * @param listener  
         *            监听器  
         */  
        public SeekBar2(int width,int maxValue,EncodedImage barImage, EncodedImage background,   
                OnSlideListener listener) {   
            this(width, maxValue,barImage, background);   
            this.listener = listener;   
        }   
      
        /**  
         *   
         * @param width  
         *            宽度  
         *    @param maxValue 刻度最大值  
         * @param barImage  
         *            可拖动的图片  
         * @param slideStlye  
         *            滑动方式 垂直或者水平  
         * @param background  
         *            背景  
         */  
        public SeekBar2(int width,int maxValue, EncodedImage barImage, EncodedImage background) {   
            super(FOCUSABLE);   
            this.width = width;   
            this.height = barImage.getHeight();   
            this.background = background.scaleImage32(Fixed32.div(background   
                    .getWidth(), width + barImage.getWidth()), Fixed32.div(   
                    background.getHeight(), height));   
            this.barImage = barImage;   
            this.maxValue = maxValue;   
        }   
           
        public int getCurrentValue(){   
            return(this.x)/(width/maxValue);   
        }   
           
        /**  
         * 设置滑动监听器  
         *   
         * @param listener  
         */  
        public void setOnSlideListener(OnSlideListener listener) {   
            this.listener = listener;   
        }   
      
        protected void layout(int width, int height) {   
            setExtent(this.background.getWidth(), this.height);   
        }   
      
        protected void paint(Graphics graphics) {   
      
            graphics.drawImage(x, 0, width, height, barImage, 0, 0, 0);   
        }   
      
        protected void paintBackground(Graphics arg0) {   
            arg0.drawImage(getPaddingLeft(), getPaddingTop(), this.background   
                    .getWidth(), height, background, 0, 0, 0);   
        }   
      
        protected boolean touchEvent(TouchEvent message) {   
            int e = message.getEvent();   
            // 聚焦时候点击处理   
            if (e == TouchEvent.CLICK && isFocus()) {   
                this.x = message.getX(1);   
                if (listener != null) {   
                    listener.onStart();   
                }   
                if (this.x > this.width) {   
                    this.x = width;   
                }   
      
                if (this.x < 0) {   
                    this.x = 0;   
                }   
                System.out.println("SeekBar2.touchEvent()Click x is :" + this.x);   
                System.out.println("SeekBar2.touchEvent()getCurrentValue is :" + getCurrentValue());   
                this.invalidate();   
                return true;   
            }   
            // 聚焦时候弹起处理   
            if (e == TouchEvent.UP && isFocus()) {   
                if (listener != null) {   
                    listener.onEnd();   
                }   
                return true;   
            }   
      
            // 聚焦时候移动处理   
            if (e == TouchEvent.MOVE && isFocus()) {   
                int x2 = message.getX(1);   
                this.x=x2;   
                if (this.x > this.width) {   
                    this.x = width;   
                }   
                if (this.x < 0) {   
                    this.x = 0;   
                }   
                System.out.println("SeekBar2.touchEvent()MOVE x is :" + this.x);   
                System.out.println("SeekBar2.touchEvent()getCurrentValue is :" + getCurrentValue());   
                this.invalidate();   
                if (listener != null) {   
                    listener.onSlide();   
                }   
                return true;   
            }   
            return false;   
        }   
      
        public static int RGB2HEX(int r, int g, int b) {   
            return r << 16 | g << 8 << b;   
        }   
      
        // 禁用此方法,不讓系統畫出焦點   
        protected void drawFocus(Graphics graphics, boolean on) {   
      
        }   
      
        /**  
         * 滑动监听器  
         *   
         * @author Wang XinFeng  
         *   
         */  
        public static interface OnSlideListener {   
      
            /**  
             * 开始滑动  
             */  
            public void onStart();   
      
            /**  
             * 滑动中  
             */  
            public void onSlide();   
      
            /**  
             * 滑动结束  
             */  
            public void onEnd();   
        }   
    }  
    
     
分享到:
评论

相关推荐

    MFC重绘的透明Slider

    在MFC(Microsoft Foundation Class)库中,Slider控件(也称为TBS)通常用于创建一个可滚动的条形控件,用户可以通过拖动滑块来选择一个数值范围内的值。然而,MFC默认的Slider控件并不支持透明效果,这在某些需要...

    slider.zip

    在微信小程序开发中,`slider`组件是一种常用的交互元素,用于实现滑动选择的效果,比如评分、进度条等。在本示例中,"slider.zip"包含了一个自定义样式的`slider`实现,通过覆盖默认样式,使得设计更加灵活且个性化...

    slider相当漂亮扩展类库

    在IT行业中,滑动条(Slider)是一种常见的用户界面元素,用于表示和调整数值或进度。"slider相当漂亮扩展类库"是一个专为滑动条组件设计的集合,提供了多种不同特性和样式的slider实现,旨在提升用户体验和界面美观...

    Slider鼠标点击 滑块移动

    在用户界面设计中,滑块(Slider)是一种常见的控件,用于让用户选择一个范围内的值。当用户点击Slider的任意位置时,滑块应能响应并移动到点击的位置,以提供直观的交互体验。 首先,我们要了解Slider的基本结构。...

    Slider.js一款图片播放控件

    Slider.js 是一款强大的开源图片播放控件,专为网页设计者和开发者打造,用于实现高质量的图片展示和交互功能。这款控件具有丰富的特性,包括图片备注和切换效果,能够帮助用户在网页上构建出引人入胜的视觉体验。 ...

    Slider Revolution演示全屏内容切换动画效果

    Slider Revolution演示全屏内容切换动画效果 Slider Revolution演示全屏内容切换动画效果 Slider Revolution演示全屏内容切换动画效果 Slider Revolution演示全屏内容切换动画效果

    OC圆形Slider.

    "OC圆形Slider"是一种独特的用户界面组件,它将传统的线性Slider转变为圆形设计,以提供更直观且有趣的音量调节方式。这种设计通常用于音乐播放器、音频应用或者其他需要调整音量的场景,因为它能够提供更自然的拖动...

    jqueryslider js 滑块

    **jQuery Slider 深入解析** 在Web开发中,滑块是一种常见的用户界面元素,用于展示图片、数据或实现进度条功能。jQuery Slider是jQuery库中的一个强大组件,它为开发者提供了灵活且易于使用的滑块解决方案。本篇将...

    jq22jqueryslider4678201807262215.zip

    **jQuery Slider插件详解** jQuery Slider是一款广泛应用于网站设计中的轮播图插件,它基于JavaScript库jQuery进行开发,能够帮助开发者轻松实现图片、内容的动态展示效果,为用户带来流畅且美观的交互体验。本插件...

    wpf slider(滑块随时间滑动) 时间轴

    在Windows Presentation Foundation (WPF) 中,`Slider`控件是一种常见的用户界面元素,它允许用户通过拖动滑块在指定范围内选择一个值。在这个特定的项目中,“wpf slider(滑块随时间滑动) 时间轴”是利用`Slider...

    unity 弧形UI 圆形slider 圆形滑动条

    本文将深入探讨如何在Unity中创建弧形UI,特别是圆形的Slider组件,这在各种游戏和应用程序中都有广泛的应用,比如进度指示器、能量条等。 首先,我们来理解"圆形Slider"的概念。在Unity的传统UI系统中,Slider通常...

    osx开发Slider滑条

    在Mac OS X(现称macOS)开发中,创建用户界面时,Slider控件是一种常见的交互元素,允许用户通过滑动来选择一个数值范围内的值。这个控件通常用于音量控制、进度调整或者参数设置等场景。在本文中,我们将深入探讨...

    MFC中Slider Control 使用简例

    ### MFC中Slider Control 使用简例 在Microsoft Foundation Classes (MFC)中,`Slider Control`(滑块控件)是一种常用的用户界面元素,用于让用户通过拖动滑块来选择一个值或设置某个参数。本篇文章将详细介绍如何...

    一个漂亮的的基于jQuery 实现的EasySlider图片滚动切换插件源码例子

    【标题】中的“基于jQuery实现的EasySlider图片滚动切换插件”是指一种使用JavaScript库jQuery设计的滑动轮播组件。EasySlider是一款流行的轻量级解决方案,它允许开发者在网页上创建美观、流畅的图片或内容滚动效果...

    MFC滑块slider控件使用

    本文将深入探讨MFC中的滑块(Slider)控件的使用,以及如何在MFC界面中实现跳转和线程的运用。 首先,让我们关注“MFC界面跳转”。在MFC应用程序中,界面跳转通常涉及到对话框(Dialog)之间的切换或导航。这可以...

    slider-revolution-v6.2.23_WordPress_slider_wApuu.com_

    "slider"表明这是一款滑动展示内容的工具,"revolution"通常指的是这款知名的响应式滑动插件的名字,它允许用户创建出引人入胜的幻灯片和全屏滚动效果。"wApuu.com"可能是一个网站或服务的名称,提供此插件的下载或...

    超酷的Slider控件源码

    在IT领域,滑块(Slider)控件是一种常见的交互元素,尤其在网页设计和应用程序开发中,它被广泛用于展示可调整的数值、切换选项或创建动态效果。本主题聚焦于一个“超酷”的Slider控件,其源码不依赖任何特定的前端...

    Slider Revolution for Wordpress

    Revolution Slider是一个具有视差功能的幻灯片插件,此插件是wordpress上目前为至最强大的幻灯片插件,具有自适应功能、可创建全宽幻灯片、具有视差效果,所有幻灯片拥有的功能他全部拥有。所以,你值得拥有! 图片...

    分享一个Vue的slider组件

    在Vue生态中,slider组件是常见的交互元素,常用于展示图片轮播、滑动选择器等场景。本篇文章将深入探讨Vue.js中的slider组件及其开发。 首先,Vue组件是Vue.js的核心特性之一,它允许我们将UI分解为可重用的模块,...

    nivo-slider3.2 jquery插件源代码

    《nivo-slider3.2:打造出色的jQuery滑动特效》 在Web开发中,动态、交互的用户体验往往能提升网站的吸引力。nivo-slider3.2是一款基于jQuery的滑动插件,它以其丰富的功能、良好的兼容性和简洁的API,深受开发者...

Global site tag (gtag.js) - Google Analytics