由于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();
}
}
分享到:
相关推荐
Slider Revolution演示全屏内容切换动画效果 Slider Revolution演示全屏内容切换动画效果 Slider Revolution演示全屏内容切换动画效果 Slider Revolution演示全屏内容切换动画效果
各种各样的的slider类的继承类,扩展类,因为工作需要,从国外网站当下来的,和大家分享一下!要是好的话,别忘了帮我顶下!谢谢大家
Revolution Slider是一个具有视差功能的幻灯片插件,此插件是wordpress上目前为至最强大的幻灯片插件,具有自适应功能、可创建全宽幻灯片、具有视差效果,所有幻灯片拥有的功能他全部拥有。所以,你值得拥有! 图片...
Slider控件的使用 Slider控件的使用 Slider控件的使用 Slider控件的使用
slider 滑块 定位
美化slider控件,实现各式各样的slider控件的界面优化,集成slider大部分操作
Slider A beautiful and also simple image slider for android! Screenshots Download Demo Getting Started First add xml view : then, add slide item : Slider slider = findViewById(R.id.slider); //...
slider响应式垂直滚动插件 slider响应式垂直滚动插件 slider响应式垂直滚动插件
slider图片轮播
Revolution slider for wordpress
Smooth Slider插件是适用于Wordpress及Wordpress MU 的插件,它能帮你创建动态的幻灯片,帮你把最优秀的文章显示在博客上,博客的作者考虑到SEO相关方面的内容,对这个插件做了相关的优化,使这个插件基于JavaScript...
slider 调色 苹果 iphone slider 调色 苹果 iphone slider 调色 苹果 iphone slider 调色 苹果 iphone
微信小程序slider自定义样式,这个样式不是真正控制在slider上的,而且用view层级覆盖来进行制作,是自己纯手工写的,不喜勿喷哦!
MFC中Slider Control 使用简例
slider控件,可以实现控制几个slider
vue-concise-slider, vue-concise-slider,A simple vue sliding component
vb slider 进度条重构~~ 重构vb的进度条~~更美观~
Slider 控件
Ext slider扩展以级范例代码----下载不扣分,回帖加1分,欢迎下载,童叟无欺Ext slider扩展以级范例代码----下载不扣分,回帖加1分,欢迎下载,童叟无欺Ext slider扩展以级范例代码----下载不扣分,回帖加1分,欢迎...
一个漂亮的的基于jQuery 实现的EasySlider图片滚动切换插件源码例子