zoukankan      html  css  js  c++  java
  • 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>  








  • 相关阅读:
    GHOJ 683 小球
    GHOJ 682 图的m着色问题
    GHOJ 681 最佳调度问题
    YBT 最长公共子上升序列
    YBT 数的划分
    Educational Codeforces Round 68 (Rated for Div. 2) C
    马里奥项目中对象直接通讯小结
    Educational Codeforces Round 67 (Rated for Div. 2) C
    19新疆省赛总结
    Codeforces Round #560 div3 (C,D)
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171620.html
Copyright © 2011-2022 走看看