熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > Android手勢學習之單點手勢

Android手勢學習之單點手勢

作者: 時間:2016-10-08 來源:網絡 收藏

04import android.os.Bundle;

05import android.util.Log;

06import android.view.GestureDetector;

07import android.view.GestureDetector.OnGestureListener;

08import android.view.MotionEvent;

09import android.view.View;

10import android.view.View.OnTouchListener;

11import android.view.animation.AnimationUtils;

12import android.widget.ImageView;

13import android.widget.Toast;

14import android.widget.ViewFlipper;

15

16public class SlideAndGestureActivity extends Activity {

17 private ViewFlipper mFlipper;

18 private GestureDetector mDetector;

19 /** Called when the activity is first created. */

20 @Override

21 public void onCreate(Bundle savedInstanceState) {

22 super.onCreate(savedInstanceState);

23 setContentView(R.layout.slide);

24

25 mDetector = new GestureDetector(getApplicationContext(),new FlingListener());

26 mFlipper = (ViewFlipper )findViewById(R.id.viewFlipper1);

27

28 mFlipper.addView(addTextView(R.drawable.one));

29 mFlipper.addView(addTextView(R.drawable.two));

30 mFlipper.addView(addTextView(R.drawable.three));

31 mFlipper.addView(addTextView(R.drawable.four));

32 mFlipper.addView(addTextView(R.drawable.five));

33

34 }

35

36 private View addTextView(int resId){

37 ImageView view = new ImageView(this);

38 view.setImageResource(resId);

39 return view;

40 }

41

42 @Override

43 public boolean onTouchEvent(MotionEvent event) {

44 return mDetector.onTouchEvent(event);

45 }

46

47 private class FlingListener extends GestureDetector.SimpleOnGestureListener{

48 @Override

49 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

50 float velocityY) {

51 String msg = e1:+e1.getX()+,+e1.getY()+e2:+e2.getX()+,+e2.getY();

52 Log.i(MotionSlide, msg);

53 if (e1.getX() - e2.getX() > 120) {

54 mFlipper.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_left_in));

55 mFlipper.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_left_out));

56 mFlipper.showNext();

57 return true;

58 } else if (e1.getX() - e2.getX() -120) {

59 mFlipper.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_right_in));

60 mFlipper.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_right_out));

61 mFlipper.showPrevious();

62 return true;

63 }

64 return false;

65 }

66

67 }

68

69}

在實際的項目開發(fā)中會遇到這樣一樣問題。

比如。上面 例子添加的ImageView默認也許不處理事件。所以 可以 正常的滑動。

但是在我的實際的開發(fā)中,的發(fā)現如ViewFlipper上面有一個GridView,GridView上面排列有Button.然后滑動手勢

的事件就不會傳播到ViewFlipper中去啊。于是我開始是在GridView上面 設置 一個margin

在margin區(qū)域里滑動事件 就會傳遞給ViwFlipper。(嚴格來說應該是mDetecotor.onTouchEvent()中去。

然后我就在想這個事件 傳播的問題,然后我想到因為其實主要調用mDetecotor的時候,

也是在Activity中的OnTouchEvent(MotionEvent)方法 中。

中將這個MotionEvent事件以這樣return mDetector.onTouchEvent(event)方法處理返回 。

于是 想在button中事件中的ACTION_MOVE中也調用mDetector.OnTouchEvent()

但是結果 不行。后來我就不區(qū)分ACTION_MOVE等等了。

于是,最后,我在對button和gridView做了如下處理。

1button.setOnTouchListener(new OnTouchListener() {

2 @Override

3 public boolean onTouch(View v, MotionEvent event) {

4 return mDetector.onTouchEvent(event);

5

6 }

7});

1gridView.setOnTouchListener(new OnTouchListener() {

2 @Override

3 public boolean onTouch(View v, MotionEvent event) {

4 return mDetector.onTouchEvent(event);

5 }

6});

我想,因為Fliing這樣事件不僅僅是ACTION_MOVE他還有開始的OnDown等等一系列事件組合起來的。


上一頁 1 2 下一頁

關鍵詞:

評論


相關推薦

技術專區(qū)

關閉