android滑动基础篇

效果图:


代码部分:

 activity类代码:

package com.TouchView;
/*
 * android滑动基础篇
 * */

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;  		//触摸事件测试区
    
    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() {  
              
            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+"
";  
        msg+="相对坐标"+String.valueOf(x)+","+String.valueOf(y)+"
";  
        msg+="绝对坐标"+String.valueOf(RawX)+","+String.valueOf(RawY)+"
";  
        msg+="触点压力"+String.valueOf(pressure)+" , ";  
        msg+="触点尺寸"+String.valueOf(size)+"
";  
        eventlable.setText(msg);  
    } 
    
    /*可以通过调用getHistorySize来获得历史的大小值,它可以返回当前事件可用的运动位置的数目。
     * 然后你可以通过使用一系列getHistorical*方法,并传递给它位置索引,来获得每一个历史事件的时间、压力、大小和位置*/
    public int ProcessHistory(MotionEvent event){  
        int historysize =event.getHistorySize();  	// 获取历史采样的集合大小 
        for(int i=0;i<historysize;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 historysize; 
     }  
}  

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="360dip"   
	    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:background="#006400" 
	    android:text="历史数据" />  
	    
    <TextView
        android:id="@+id/event_label"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:background="#C0C0C0"
        android:textColor="#000000" 
        android:text="触摸事件:" />
  
</LinearLayout>  








原文地址:https://www.cnblogs.com/anyuan9/p/6171620.html