android滑动基础篇

本文详细介绍了一个简单的Android应用程序如何处理触摸事件。通过一个示例程序,文章展示了如何使用MotionEvent类来捕捉并处理ACTION_DOWN、ACTION_MOVE及ACTION_UP等触摸事件,并解析了触点的相对坐标、绝对坐标、触点压力及尺寸等信息。

因为觉得android用到滑动的地方比较多,所以在写一篇基础的里字..

效果图:

代码部分:

activity类代码:

package com.TouchView;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;

public class TouchView extends Activity {

    private TextView eventlable;
    private TextView histroy;
    private TextView TouchView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TouchView =(TextView)findViewById(R.id.touch_area);
        histroy =(TextView)findViewById(R.id.history_label);
        eventlable =(TextView)findViewById(R.id.event_label);
        
        TouchView.setOnTouchListener(new View.OnTouchListener() {
			
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				int action =event.getAction();
				switch(action){
				//当按下的时候
				case (MotionEvent.ACTION_DOWN):
					Display("ACTION_DOWN",event);
				break;
				//当按上的时候
				case(MotionEvent.ACTION_UP):
					int historysize=ProcessHistory(event);
				    histroy.setText("历史数据"+historysize);
				    Display("ACTION_UP",event);
				    break;
				 //当触摸的时候
				case(MotionEvent.ACTION_MOVE):
					Display("ACTION_MOVE",event);
				}
				return true;
			}
		});
    }
    public void Display(String eventType,MotionEvent event){
    	//触点相对坐标的信息
    	int x =(int) event.getX();
    	int y=(int)event.getY();
    	//表示触屏压力大小
    	float pressure =event.getPressure();
    	//表示触点尺寸
    	float size=event.getSize();
    	//获取绝对坐标信息
    	int RawX=(int)event.getRawX();
    	int RawY=(int)event.getRawY();
    	
    	String msg="";
    	
    	msg+="事件类型"+eventType+"\n";
    	msg+="相对坐标"+String.valueOf(x)+","+String.valueOf(y)+"\n";
    	msg+="绝对坐标"+String.valueOf(RawX)+","+String.valueOf(RawY)+"\n";
    	msg+="触点压力"+String.valueOf(pressure)+",";
    	msg+="触点尺寸"+String.valueOf(size)+"\n";
    	eventlable.setText(msg);
    }
    public int ProcessHistory(MotionEvent event){
    	int history =event.getHistorySize();
    	for(int i=0;i<history;i++){
    		long time=event.getHistoricalEventTime(i);
    		float pressure=event.getHistoricalPressure(i);
    		float x=event.getHistoricalX(i) ;
    		float y=event.getHistoricalY(i);
    	    float size=event.getHistoricalSize(i);	
    	}
    	
		return history;
    	
    }
    
}


MAIN.XML代码部分:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:id="@+id/touch_area"
    android:layout_width="fill_parent" 
    android:layout_height="300dip" 
    android:background="#0FF"
    android:textColor="#FFFFFF"
    android:text="触摸事件测试区"
 
    />
    <TextView  
    android:id="@+id/history_label"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="历史数据"
  
    />
    <TextView  
    android:id="@+id/event_label"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="触摸事件:"
  
    />
</LinearLayout>


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值