关于按钮按下时触发其他按钮的问题,有做过的进来看一下

玄之丞 2014-06-16 10:41:30
想写一个钢琴的程序练手,卡在滑动触发多个按钮上。
主要是,当按下一个按钮时,不提起手指的情况下,移动到其他的按钮上,其他按钮,没办法得到按下消息。


想过一种解决方案,就是做一个按钮,然后根据触模位置,绘制图像模拟按钮的按下和弹起态。
但是感觉很麻烦。有没有更好的主意呢。
...全文
266 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
manxiSafe 2014-06-17
  • 打赏
  • 举报
回复
3楼的有理。具体没试过,你可以试下下面的代码
private OnTouchListener lisenterToch = new OnTouchListener()
	{
		@Override
		public boolean onTouch(View arg0, MotionEvent arg1) {
			 //获取触控的点数   
	        int tag = (Integer)arg0.getTag();
	        switch(arg1.getAction() & MotionEvent.ACTION_MASK){   
	        //单手指按下   
	        case MotionEvent.ACTION_DOWN:  	        	
				break;   
	            //第二根手指按下  
	        case MotionEvent.ACTION_POINTER_DOWN:  	 
	            break;  	         
	        case MotionEvent.ACTION_MOVE:    //这有MOVE事件
	            break;   
	        //有手指抬起,将模式设为NONE  
	        case MotionEvent.ACTION_UP:
	        	break;
	        case MotionEvent.ACTION_POINTER_UP:   
	            break;   
	        default: 
	        }           
			// TODO Auto-generated method stub		
			return false;
		}
	};
junyuyi 2014-06-17
  • 打赏
  • 举报
回复
OnTouch事件似乎能够实现 你一个按钮按下后OnTouch的按下事件触发 同时另一个按钮按下时也能触发按下事件(特地去测试过 可行) 所以你把要处理的操作放在每个按钮OnTouch的ACTION_DOWN里面 就可以了……
映映 2014-06-17
  • 打赏
  • 举报
回复
应该用滑动事件,听你的描述,像做一个游戏,最好找一个游戏引擎来做
箍心而行 2014-06-17
  • 打赏
  • 举报
回复
获取所有button 将所有button设为不可用 你手指放到哪个就把哪个id得到 使其可用 离开之后 再次设为不可用
玄之丞 2014-06-17
  • 打赏
  • 举报
回复
引用 3 楼 junyuyi 的回复:
OnTouch事件似乎能够实现 你一个按钮按下后OnTouch的按下事件触发 同时另一个按钮按下时也能触发按下事件(特地去测试过 可行) 所以你把要处理的操作放在每个按钮OnTouch的ACTION_DOWN里面 就可以了……
层主可以理解错了,我说的不是同时触发多个按钮。 而是说。手指按下按钮后,不提起手指的情况下,将手指移到其他按钮上。 这时,如果不做任何处理,会触发原先按下按钮的MotionEvent.ACTION_MOVE消息。 但是我想要的是,移动至的那个按钮的MotionEvent.ACTION_DOWN
玄之丞 2014-06-17
  • 打赏
  • 举报
回复
引用 2 楼 jack_wolf_ 的回复:
应该用滑动事件,听你的描述,像做一个游戏,最好找一个游戏引擎来做
能说的详细一点么?
玄之丞 2014-06-17
  • 打赏
  • 举报
回复
引用 1 楼 a85454597 的回复:
获取所有button 将所有button设为不可用 你手指放到哪个就把哪个id得到 使其可用 离开之后 再次设为不可用
            if ( event.getAction()==MotionEvent.ACTION_MOVE ) {
                int x = (int) event.getX();  
                int y = (int) event.getY();  
                if ( x>=0 && x<v.getWidth() && y>=0 && y<v.getHeight() ) {
                } else {
                	v.setEnabled(false);
                	return false;
                }
            }
这样不行。

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧