編輯:關於Android編程
public class ViewActivity extends Activity implements View.OnTouchListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.view_gestrue);
LinearLayout ll_context = (LinearLayout) findViewById(R.id.ll_context);
ll_context.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
Log.v("-->", "手指碰到屏幕");
break;
case MotionEvent.ACTION_MOVE:
Log.v("-->", "手指在移動");
break;
case MotionEvent.ACTION_OUTSIDE:
Log.v("-->", "手指離開view的邊界");
break;
case MotionEvent.ACTION_UP:
Log.v("-->", "手指離開屏幕");
break;
case MotionEvent.ACTION_SCROLL:
Log.v("-->", "手指在滑動");
break;
case MotionEvent.ACTION_POINTER_DOWN:
Log.v("-->", "非主手指碰到屏幕");
break;
case MotionEvent.ACTION_POINTER_UP:
Log.v("-->", "非主手指離開屏幕");
break;
}
return true;//攔截事件
}
}
event.getY();//觸碰點獲取距離v頂部的距離
event.getRawY();//觸碰點獲取距離屏幕頂部的距離
event.getPointerCount();//獲取觸碰手指的個數
//GestureDetector這個類對外提供了兩個接口:OnGestureListener,OnDoubleTapListener,還有一個內部類SimpleOnGestureListener。
1.onDown(MotionEvent e):down事件;
2.onSingleTapUp(MotionEvent e):一次點擊up事件;在touch down後又沒有滑動
(onScroll),又沒有長按(onLongPress),然後Touchup時觸發。
點擊一下非常快的(不滑動)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
點擊一下稍微慢點的(不滑動)Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
3.onShowPress(MotionEvent e):down事件發生而move或則up還沒發生前觸發該事件;Touch了還沒有滑動時觸發(與onDown,onLongPress)比較onDown只要Touch down一定立刻觸發。而Touchdown後過一會沒有滑動先觸發onShowPress再是onLongPress。所以Touchdown後一直不滑動
按照onDown->onShowPress->onLongPress這個順序觸發。
4.onLongPress(MotionEvent e):長按事件;Touch了不移動一直Touch down時觸發
5.onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):滑動手勢事件;Touch了滑動一點距離後,在ACTION_UP時才會觸發參數:e1 第1個ACTION_DOWN MotionEvent 並且只有一個;e2 最後一個ACTION_MOVE MotionEvent ;velocityX X軸上的移動速度,像素/秒 ;velocityY Y軸上的移動速度,像素/秒.觸發條件:X軸的坐標位移大於FLING_MIN_DISTANCE,且移動速度大於FLING_MIN_VELOCITY個像素/秒
6.onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY):在屏幕上拖動事件。無論是用手拖動view,或者是以拋的動作滾動,都會多次觸發,這個方法在ACTION_MOVE動作發生時就會觸發
拋:手指觸動屏幕後,稍微滑動後立即松開
1.onDoubleTap(MotionEvent e):在雙擊的第二下,Touch down時觸發 。
2.onDoubleTapEvent(MotionEvent e):通知DoubleTap手勢中的事件,包含down、up和move事件(這裡指的是在雙擊之間發生的事件,例如在同一個地方雙擊會產生DoubleTap手勢,而在DoubleTap手勢裡面還會發生down和up事件,這兩個事件由該函數通知);雙擊的第二下Touch down和up都會觸發,可用e.getAction()區分。
3.onSingleTapConfirmed(MotionEvent e):用來判定該次點擊是SingleTap而不是DoubleTap,如果連續點擊兩次就是DoubleTap手勢,如果只點擊一次,系統等待一段時間後沒有收到第二次點擊則判定該次點擊為SingleTap而不是DoubleTap,然後觸發SingleTapConfirmed事件。這個方法不同於onSingleTapUp,他是在GestureDetector確信用戶在第一次觸摸屏幕後,沒有緊跟著第二次觸摸屏幕,也就是不是“雙擊”的時候觸發
//distanceX,是前後兩次call的X距離,不是e2與e1的水平距離; 是前後兩次call的Y距離,不是e2與e1的垂直距離
1:繼承GestureDetector.OnGestureListener
2:實例化檢測器GestureDetector mDetector = new GestureDetector(ViewActivity.this, this);
3:在ontouch裡面回調方法
@Override
public boolean onTouch(View v, MotionEvent event) {
mDetector.onTouchEvent(event);
return true;
}
Android 自定義陰影效果詳解及實例Android5.X中,Google為其增加了兩個屬性 android:elevation=” ” 與 android:trans
抓包(Packet Capture),實際上就是對網絡請求(包括發送與接收)的數據包進行截獲、重發、編輯、轉存等操作,在Android下,也經常被用來進行數據截取等。學會
package com.gc.adapterviewflipperdemo; /** * 功能:自動播放的圖片庫 * @author Android將軍 */ /*
說起這個字母導航,我相信大家都不陌生,不論是聯系人列表還是城市列表,基本上都是需要字母導航,那我們就有必要來研究一下這個思路的探索了,畢竟這是一個非常常用的功能,如果現