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

Google官方提供的有用的Android范例程序,值得学习的新技术

原文,Google官方blog。 http://android-developers.blogspot.sg/2015/04/new-android-code-samples.html ...
  • birdsaction
  • birdsaction
  • 2015年04月24日 15:09
  • 10264

Android应用申请运行时权限(Permission)示例

Android应用申请运行时权限示例
  • Gaugamela
  • Gaugamela
  • 2017年02月21日 11:04
  • 4185

Android OnTouchListener自定义 onTouch完全解析

做android开发对touch事件是要清晰明了的,如果心存疑问,那么本博客 可以帮你清晰的屡清楚源码是如果实现 onLongClickListener onDoubleClickListen...
  • qq_28195645
  • qq_28195645
  • 2016年12月17日 17:34
  • 1513

Android RecyclerView单击、长按事件标准实现:基于OnItemTouchListener + GestureDetector

Android RecyclerView单击、长按事件:基于OnItemTouchListener + GestureDetector标准实现Android RecyclerView虽然拥有Lis...
  • zhangphil
  • zhangphil
  • 2016年11月19日 14:39
  • 3191

cocos2d-x 事件分发机制 ——触摸事件监听

cocos2d-x 3.0 出来已经好久了,也已经用3.0写了几个小游戏,感觉3.0的事件触发机制太赞了,随这里总结一下,也算是对知识的一种回忆和加深理解。 3.0的事件分发机制中,需要也仅仅需...
  • liufuyuhao
  • liufuyuhao
  • 2014年11月02日 14:52
  • 324

Android Studio中使用AIDL简单示例

这两天在学习aidl跨进程调用,研究了一天终于写出了个helloword。。做下记录吧。 根据官方提供的指南,开发aidl跨进程调用,主要分以下步骤: 1.创建.aidl文件-该文件(YourIn...
  • lingwu7
  • lingwu7
  • 2015年11月30日 23:12
  • 1831

OnTouchListener和OnClickListener

单击事件很简单,这里只说一个问题:isPressed()方法。 [java] view plaincopyprint?       /**   * 点击事件   *    * ...
  • LAMP_zy
  • LAMP_zy
  • 2013年07月10日 22:19
  • 10059

掌握Android Touch事件机制

掌握Android Touch事件机制 DaveSmith @devunwired 要点涵盖 l  Touch系统概述 l  Framwork层的Touch事件 l  Touch事件的处理...
  • THEONE10211024
  • THEONE10211024
  • 2015年05月05日 18:15
  • 1406

android 4.1 add无缝播放处理

mediaplayer 可以同时创建多个对象,实现多个播放任务。在Android4.1中,MediaPlayer实现两个完全独立的MediaPlayer类上执行无缝播放,主要是增加了一个实现无缝播放的...
  • hellofeiya
  • hellofeiya
  • 2013年02月20日 10:43
  • 5403

Android平台下hook框架adbi的研究(下)

转:http://blog.csdn.net/roland_sun/article/details/36049307 上篇中,我大致介绍了一下如何将一个dlopen()的调用插入到指...
  • zhangmiaoping23
  • zhangmiaoping23
  • 2016年01月26日 20:22
  • 1002
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 之 TouchListener 示例
举报原因:
原因补充:

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