ETHAN IN IT

Lost in it

Android 之 TouchListener 示例
package com.ethan;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.AbsoluteLayout;
import android.widget.Button;

public class TouchListenerActivity extends Activity {
	final static int WRAP_CONTENT=-2;//表示WRAP_CONTENT的常量
	final static int X_MODIFY=4;//在非全屏模式下X坐标的修正值
	final static int Y_MODIFY=52;//在非全屏模式下Y坐标的修正值
	int xSpan;//在触控笔点击按钮的情况下相对于(按钮自己坐标系)的
	int ySpan;//X,Y位置
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button bok=(Button)this.findViewById(R.id.Button01);
        bok.setOnTouchListener(
        		new OnTouchListener(){
					public boolean onTouch(View view, MotionEvent event) {					
						switch(event.getAction()){
						 case MotionEvent.ACTION_DOWN://触控笔按下
							 xSpan=(int)event.getX();
							 ySpan=(int)event.getY();
						 break;
						 case MotionEvent.ACTION_MOVE://触控笔移动
							 Button bok=(Button)findViewById(R.id.Button01);
							 //让按钮随着触控笔的移动一起移动
							 ViewGroup.LayoutParams  lp=
								new AbsoluteLayout.LayoutParams(
										WRAP_CONTENT, 
										WRAP_CONTENT, 
										(int)event.getRawX()-xSpan-X_MODIFY, 
										(int)event.getRawY()-ySpan-Y_MODIFY
								) ;					
							 bok.setLayoutParams(lp);
						break;
						}											
						return true;
					}        			
        		}
        );
    }
    
    public boolean onKeyDown (int keyCode, KeyEvent event){//键盘键按下的方法
    	Button bok=(Button)this.findViewById(R.id.Button01);
    	bok.setText(keyCode+" Down");    	
    	return true;
    }
    public boolean onKeyUp (int keyCode, KeyEvent event){//键盘键抬起的方法
    	Button bok=(Button)this.findViewById(R.id.Button01);
    	bok.setText(keyCode+" Up");    	
    	return true;
    }
    
    //基于回调
    public boolean onTouchEvent (MotionEvent event){//让按钮随着触控笔的移动一起移动
    	Button bok=(Button)this.findViewById(R.id.Button01);
    	ViewGroup.LayoutParams  lp=
			new AbsoluteLayout.LayoutParams(
					WRAP_CONTENT, WRAP_CONTENT, 
					(int)event.getRawX()-xSpan-X_MODIFY, 
					(int)event.getRawY()-ySpan-Y_MODIFY
			) ;					
		bok.setLayoutParams(lp);
    	return true;
    }
}
中间夹杂了键盘相应时间的处理和OnTouchEvent
阅读更多
文章标签: android button class up
个人分类: Android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Android 之 TouchListener 示例

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭