gpt4 book ai didi

android - 结合搜索栏和进度条来创建支持修剪的媒体播放器

转载 作者:行者123 更新时间:2023-11-29 16:00:30 30 4
gpt4 key购买 nike

我们想创建一个播放器/微调器...

蓝色框内是进度条的触摸区域,黄色框内是用于设置起点和终点的微调器。

为此,我们正在使用自定义 View ,如“range-seek-bar”。处理程序图像正在裁剪搜索栏 View 并进入另一个 View (见下图)。我们想要实现的是仅单击那些处理程序的圆圈(而不是整个图像)来移动处理程序,但由于这些是位图并且点击是在搜索栏 View 之外进行的,因此我们无法获得 OnClick 调用。当用户在那些红色方 block 内单击时能够收听。

enter image description here

非常感谢您的帮助和回复。

最佳答案

您可能还想检查这个库:https://code.google.com/p/range-seek-bar/

我链接的“范围搜索栏”不允许触摸拇指以外的地方。然后,您可以修改可绘制对象及其 onDraw() 以在视觉上自定义它(例如,使其透明)。修改它以使其无拇指,用作顶部进度条。因此,您将拥有其中两个:一个没有拇指作为顶部进度条,一个有拇指但带有透明线作为底部搜索栏。

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);
}
}

对于无拇指版本,还要处理它的触摸事件。

public boolean onTouchEvent(MotionEvent event) {

if (!isEnabled() || !isNotThumbless)
return false;

关于android - 结合搜索栏和进度条来创建支持修剪的媒体播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24986484/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com