关闭

Android 之 TouchListener 示例

标签: androidbuttonclassup
1948人阅读 评论(0) 收藏 举报
分类:
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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:628829次
    • 积分:7213
    • 等级:
    • 排名:第3213名
    • 原创:183篇
    • 转载:80篇
    • 译文:0篇
    • 评论:123条
    文章分类
    最新评论