由于BB项目需要,特定制了Sliderbar,BB上没有这个组件,所以只能自己动手。 请看代码 : Java代码 package
-
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(Microsoft Foundation Class)库中,Slider控件(也称为TBS)通常用于创建一个可滚动的条形控件,用户可以通过拖动滑块来选择一个数值范围内的值。然而,MFC默认的Slider控件并不支持透明效果,这在某些需要...
在微信小程序开发中,`slider`组件是一种常用的交互元素,用于实现滑动选择的效果,比如评分、进度条等。在本示例中,"slider.zip"包含了一个自定义样式的`slider`实现,通过覆盖默认样式,使得设计更加灵活且个性化...
在IT行业中,滑动条(Slider)是一种常见的用户界面元素,用于表示和调整数值或进度。"slider相当漂亮扩展类库"是一个专为滑动条组件设计的集合,提供了多种不同特性和样式的slider实现,旨在提升用户体验和界面美观...
在用户界面设计中,滑块(Slider)是一种常见的控件,用于让用户选择一个范围内的值。当用户点击Slider的任意位置时,滑块应能响应并移动到点击的位置,以提供直观的交互体验。 首先,我们要了解Slider的基本结构。...
Slider.js 是一款强大的开源图片播放控件,专为网页设计者和开发者打造,用于实现高质量的图片展示和交互功能。这款控件具有丰富的特性,包括图片备注和切换效果,能够帮助用户在网页上构建出引人入胜的视觉体验。 ...
Slider Revolution演示全屏内容切换动画效果 Slider Revolution演示全屏内容切换动画效果 Slider Revolution演示全屏内容切换动画效果 Slider Revolution演示全屏内容切换动画效果
"OC圆形Slider"是一种独特的用户界面组件,它将传统的线性Slider转变为圆形设计,以提供更直观且有趣的音量调节方式。这种设计通常用于音乐播放器、音频应用或者其他需要调整音量的场景,因为它能够提供更自然的拖动...
**jQuery Slider 深入解析** 在Web开发中,滑块是一种常见的用户界面元素,用于展示图片、数据或实现进度条功能。jQuery Slider是jQuery库中的一个强大组件,它为开发者提供了灵活且易于使用的滑块解决方案。本篇将...
**jQuery Slider插件详解** jQuery Slider是一款广泛应用于网站设计中的轮播图插件,它基于JavaScript库jQuery进行开发,能够帮助开发者轻松实现图片、内容的动态展示效果,为用户带来流畅且美观的交互体验。本插件...
### MFC中Slider Control 使用简例 在Microsoft Foundation Classes (MFC)中,`Slider Control`(滑块控件)是一种常用的用户界面元素,用于让用户通过拖动滑块来选择一个值或设置某个参数。本篇文章将详细介绍如何...
在Windows Presentation Foundation (WPF) 中,`Slider`控件是一种常见的用户界面元素,它允许用户通过拖动滑块在指定范围内选择一个值。在这个特定的项目中,“wpf slider(滑块随时间滑动) 时间轴”是利用`Slider...
在Mac OS X(现称macOS)开发中,创建用户界面时,Slider控件是一种常见的交互元素,允许用户通过滑动来选择一个数值范围内的值。这个控件通常用于音量控制、进度调整或者参数设置等场景。在本文中,我们将深入探讨...
本文将深入探讨如何在Unity中创建弧形UI,特别是圆形的Slider组件,这在各种游戏和应用程序中都有广泛的应用,比如进度指示器、能量条等。 首先,我们来理解"圆形Slider"的概念。在Unity的传统UI系统中,Slider通常...
【标题】中的“基于jQuery实现的EasySlider图片滚动切换插件”是指一种使用JavaScript库jQuery设计的滑动轮播组件。EasySlider是一款流行的轻量级解决方案,它允许开发者在网页上创建美观、流畅的图片或内容滚动效果...
"slider"表明这是一款滑动展示内容的工具,"revolution"通常指的是这款知名的响应式滑动插件的名字,它允许用户创建出引人入胜的幻灯片和全屏滚动效果。"wApuu.com"可能是一个网站或服务的名称,提供此插件的下载或...
在IT领域,滑块(Slider)控件是一种常见的交互元素,尤其在网页设计和应用程序开发中,它被广泛用于展示可调整的数值、切换选项或创建动态效果。本主题聚焦于一个“超酷”的Slider控件,其源码不依赖任何特定的前端...
Revolution Slider是一个具有视差功能的幻灯片插件,此插件是wordpress上目前为至最强大的幻灯片插件,具有自适应功能、可创建全宽幻灯片、具有视差效果,所有幻灯片拥有的功能他全部拥有。所以,你值得拥有! 图片...
在Vue生态中,slider组件是常见的交互元素,常用于展示图片轮播、滑动选择器等场景。本篇文章将深入探讨Vue.js中的slider组件及其开发。 首先,Vue组件是Vue.js的核心特性之一,它允许我们将UI分解为可重用的模块,...
《nivo-slider3.2:打造出色的jQuery滑动特效》 在Web开发中,动态、交互的用户体验往往能提升网站的吸引力。nivo-slider3.2是一款基于jQuery的滑动插件,它以其丰富的功能、良好的兼容性和简洁的API,深受开发者...
Cute Slider v2.1是一款强大的幻灯片制作工具,专为那些希望在网站上添加引人注目的3D效果的用户设计。它基于jQuery库,使得JavaScript编程变得更加简便,无需深入复杂的代码即可创建出令人惊叹的动态展示效果。这款...