我们想创建一个播放器/修剪器......
蓝色框内是进度的触摸区域,黄色框中是修剪器,用于设置开始和结束点。
我们正在使用自定义视图,例如" range-seek-bar"以此目的。处理程序图像从搜索栏视图剪切到另一个视图(请参见下图)。 我们试图实现的只是点击那些处理程序的圈子(而不是整个图像)来移动处理程序,但由于这些是位图并且点击是在搜索栏视图之外进行的,我们不能得到OnClick电话。当用户点击那些红色方块时能够听。
非常感谢您的帮助和回复。
答案 0 :(得分:4)
您可能还想检查此库:https://code.google.com/p/range-seek-bar/
"范围搜索栏"我链接的并不允许拇指外的触摸。然后,您可以修改drawable及其onDraw()以在视觉上自定义它(例如,使其透明)。修改它以使其成为thumbless,用作顶部进度条。所以你有两个:一个是thumbless作为顶部进度条,一个是拇指但透明线作为底部搜索栏。
boolean isNotLineless; // Set this in constructor or a setter
boolean isNotThumbless; // Set this in constructor or a setter
@Override
protected synchronized void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (isNotLineless) {
// draw seek bar background line
final RectF rect = new RectF(padding, 0.5f * (getHeight() - lineHeight), getWidth() - padding, 0.5f * (getHeight() + lineHeight));
paint.setStyle(Style.FILL);
paint.setColor(Color.GRAY);
paint.setAntiAlias(true);
canvas.drawRect(rect, paint);
// draw seek bar active range line
rect.left = normalizedToScreen(normalizedMinValue);
rect.right = normalizedToScreen(normalizedMaxValue);
// orange color
paint.setColor(DEFAULT_COLOR);
canvas.drawRect(rect, paint);
}
if (isNotThumbless) {
// draw minimum thumb
drawThumb(normalizedToScreen(normalizedMinValue), Thumb.MIN.equals(pressedThumb), canvas);
// draw maximum thumb
drawThumb(normalizedToScreen(normalizedMaxValue), Thumb.MAX.equals(pressedThumb), canvas);
}
}
对于thumbless版本,也会处理其触摸事件。
public boolean onTouchEvent(MotionEvent event) {
if (!isEnabled() || !isNotThumbless)
return false;