gpt4 book ai didi

android - 如何使用触摸屏同时对两个 SeekBar 实例(或任何其他控件,例如 Button)进行操作?

转载 作者:行者123 更新时间:2023-11-30 04:37:26 26 4
gpt4 key购买 nike

我正在开发一款可以同时控制多达八首音乐轨道的音量的应用。一个用例是通过同时淡出 Track1 和淡入 Track2 来混合两个轨道的 dj Action 。

鉴于上述情况,我创建了一个包含两个 SeekBar 实例和 onProgressChanged(...) 的 Activity事件实现。现在,我的问题出现了!我无法同时控制两个 SeekBar。我一次只能演一个。

看着Android平台的多点触控文档,我只能被它的复杂性吓到。查看代码让我相信解决方案不存在,至少不存在。

有什么想法吗?

谢谢,聚丙烯

最佳答案

好的。因此,在进一步研究如何处理多点触摸事件并遵循 Damian 的提示之后,我已经到了拦截所有触摸事件以确定每个指针(在本例中为手指)是否在一组预先确定的 SeekBar 实例,vol1vol2

这是放置在您的Activity 中的代码:

@Override
public boolean dispatchTouchEvent (MotionEvent ev)
{
Rect sb1Rect = new Rect();
Rect sb2Rect = new Rect();
vol1.getGlobalVisibleRect(sb1Rect);
vol2.getGlobalVisibleRect(sb2Rect);

for (int i = 0; i < ev.getPointerCount(); i++) {
int pId = ev.getPointerId(i);
int coordX = (int) ev.getX(i);
int coordY = (int) ev.getY(i);

if(sb1Rect.contains(coordX, coordY)) {
Log.d(TAG, "[PID=" + pId + "] -> SeekBar 1 -> x:" + coordX + ", y:" + coordY);
} else if (sb2Rect.contains(coordX, coordY)) {
Log.d(TAG, "[PID=" + pId + "] -> SeekBar 2 -> x:" + coordX + ", y:" + coordY);
}
}

LinearLayout l =(LinearLayout) this.findViewById(R.id.linearLayout1);
l.dispatchTouchEvent(ev);

return true;
}

现在,我只需要计算每个触摸的 SeekBar 的值,基于它的相对 X 坐标(而不是与整个 Activity 相关的绝对值) 并相应地设置进度值 (.setProgress(int value))。

关于android - 如何使用触摸屏同时对两个 SeekBar 实例(或任何其他控件,例如 Button)进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6595646/

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