Android 之 TouchListener 示例

原创 2012年03月29日 23:59:49
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循序渐进 - 3.4 TouchListener PK OnTouchEvent + 多点触碰

引子 如题,本节给大家带来的是TouchListener与OnTouchEvent的比较,以及多点触碰的知识点! 1. TouchListener 是 基于监听 的, 2. OnTo...
  • aasum
  • aasum
  • 2015年10月16日 17:18
  • 382

Android基础入门教程——3.4 TouchListener PK OnTouchEvent + 多点触碰

Android基础入门教程——3.4 TouchListener PK OnTouchEvent + 多点触碰 本节引言: 1.基于监听的TouchListener 代码示例: OnTouchList...

事件处理机制之TouchListener 与 OnTouchEvent & 多点触碰

(一)概述 本节给大家带来的是TouchListener与OnTouchEvent的比较,以及多点触碰的知识点! TouchListener是基于监听的,OnTouchEvent则是基于回调的!通过...

实现拖拽删除的TouchListener

源码如下

android broadcastReceiver 代码示例

  • 2016年09月26日 17:54
  • 26.95MB
  • 下载

使用Kotlin编写Android项目示例

Kotlin简介: Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。 Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设...
  • fuckluy
  • fuckluy
  • 2017年05月19日 18:01
  • 1995

Android数据库操作示例

  • 2013年07月26日 17:02
  • 1.05MB
  • 下载

android示例程序

  • 2014年10月21日 08:59
  • 21.83MB
  • 下载

Android涂鸦技术及刮刮乐示例分析

概述:   很早之前就想研究一下Android中的涂鸦,其实也说不上是研究了,毕竟都是一些相对比较简单的知识点。下面就对基于画布(Canvas)和触摸事件(onTouchEvent)来实现涂鸦和...
  • myrssq
  • myrssq
  • 2016年12月08日 14:52
  • 96
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 之 TouchListener 示例
举报原因:
原因补充:

(最多只允许输入30个字)