• android 组件内部实现触摸事件,更改背景


    当我们需要实现触摸事件的时候,通常就会想到OnTouchEvent这个方法,它能够获取触摸点的坐标,而组件同样也有这样的一个功能,使用这个功能,可以实现组件在父布局界面上移动,缩放,更改背景图片。这里通过一个小例子来实现利用组件的onTouchEvent事件实现点击组件左半部分更改左边图片,点击组件右半部分更改右边图片。

    if (v == CamMove_UD_Btn) {
    	if (event.getAction() == MotionEvent.ACTION_DOWN) {
    		if (event.getX() <= btn_in_bottom_width_center) { //这个是组件宽度的一半
    			CamMove_UD_Btn.setBackgroundResource(R.drawable.cam_up);
    		}else {
    			CamMove_UD_Btn.setBackgroundResource(R.drawable.cam_down);
    						
    		}
    		CamMove_UD_Btn_Click = true;//使用这个变量的目的就是:有时手指从水平位置滑动到组件到,没有检测到Down事件,但是松开手后就会检测到UP
    	}else if (CamMove_UD_Btn_Click && event.getAction() == MotionEvent.ACTION_UP) {
    		CamMove_UD_Btn.setBackgroundResource(R.drawable.cam_off);
    		CamMove_UD_Btn_Click = false;
    	}
    }


    其实思路是很简单的。获取手电级的位置,如果组件是横向的,获取X坐标,如果小于组件的一半则认为是左边,如果大于一般则认为是右边。

    下面是对于组件自己的移动

    imagebutton.setOnTouchListener(new OnTouchListener() {  
                int[] postion = new int[] { 0, 0 };  
                @Override  
                public boolean onTouch(View v, MotionEvent event) {  
                    int x = (int) event.getRawX();  
                    int y = (int) event.getRawY();  
                    int left = v.getLeft();  
                    int top = v.getTop();  
                    switch (event.getAction()) {  
                    case MotionEvent.ACTION_DOWN:  
                        postion[0] = (int) event.getX();  
                        postion[1] = y - v.getTop();  
                        break;  
      
                    case MotionEvent.ACTION_MOVE:  
                        v.layout(x - postion[0], y - postion[1], x + 1024  
                                - postion[0], y - postion[1] + 768);  
                        v.postInvalidate();  
                        default:break;  
                    }  
                    return false;  
                }  
      
            });  


    下面是布局的移动

                x=x+10;  
                y=y+10;  
                LayoutParams layoutParams=mIconPinpu.getLayoutParams();  //获取布局的布局参数
                layoutParams.height=x;  
                layoutParams.width=y;  
                mIconPinpu.setLayoutParams(layoutParams);  



  • 相关阅读:
    (KMP Next的运用) Period II -- fzu -- 1901
    (字典树)How many--hdu--2609
    (KMP 最大表示最小表示)String Problem -- hdu-- 3374
    (KMP 暴力)Corporate Identity -- hdu -- 2328
    (KMP 扩展)Clairewd’s message -- hdu -- 4300
    (KMP 字符串处理)Substrings -- hdu -- 1238
    (KMP)Count the string -- hdu -- 3336
    JQuery弹出窗口小插件ColorBox
    jquery promot
    C#
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3174562.html
Copyright © 2020-2023  润新知