<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Android手勢(shì)學(xué)習(xí)之單點(diǎn)手勢(shì)

          Android手勢(shì)學(xué)習(xí)之單點(diǎn)手勢(shì)

          作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò) 收藏

          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}

          在實(shí)際的項(xiàng)目開(kāi)發(fā)中會(huì)遇到這樣一樣問(wèn)題。

          比如。上面 例子添加的ImageView默認(rèn)也許不處理事件。所以 可以 正常的滑動(dòng)。

          但是在我的實(shí)際的開(kāi)發(fā)中,的發(fā)現(xiàn)如ViewFlipper上面有一個(gè)GridView,GridView上面排列有Button.然后滑動(dòng)手勢(shì)

          的事件就不會(huì)傳播到ViewFlipper中去啊。于是我開(kāi)始是在GridView上面 設(shè)置 一個(gè)margin

          在margin區(qū)域里滑動(dòng)事件 就會(huì)傳遞給ViwFlipper。(嚴(yán)格來(lái)說(shuō)應(yīng)該是mDetecotor.onTouchEvent()中去。

          然后我就在想這個(gè)事件 傳播的問(wèn)題,然后我想到因?yàn)槠鋵?shí)主要調(diào)用mDetecotor的時(shí)候,

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

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

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

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

          于是,最后,我在對(duì)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});

          我想,因?yàn)镕liing這樣事件不僅僅是ACTION_MOVE他還有開(kāi)始的OnDown等等一系列事件組合起來(lái)的。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();