真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android手勢(shì)識(shí)別ViewFlipper觸摸動(dòng)畫(huà)的示例分析

這篇文章給大家介紹Android手勢(shì)識(shí)別ViewFlipper觸摸動(dòng)畫(huà)的示例分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

十年的大同網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整大同建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“大同網(wǎng)站設(shè)計(jì)”,“大同網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

我們?cè)榻B過(guò)“在Android開(kāi)發(fā)中使用Gallery實(shí)現(xiàn)'多級(jí)聯(lián)動(dòng)'”和“在Android中實(shí)現(xiàn)service動(dòng)態(tài)更新UI界面”。今天給大家介紹一下如何實(shí)現(xiàn)Android主頁(yè)面的左右拖動(dòng)效果。實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,就是使用ViewFlipper來(lái)將您要來(lái)回拖動(dòng)的View裝在一起,然后與GestureDetector手勢(shì)識(shí)別類(lèi)來(lái)聯(lián)動(dòng),確定要顯示哪個(gè)View,加上一點(diǎn)點(diǎn)動(dòng)畫(huà)效果即可。比如當(dāng)手指向左快速滑動(dòng)時(shí)跳轉(zhuǎn)到上一個(gè)View,手指向右快速滑動(dòng)時(shí)跳轉(zhuǎn)到下一個(gè)View,本例中使用圖片作為各個(gè)View的頁(yè)面,實(shí)現(xiàn)左右快速滑動(dòng)顯示不同的圖片。

Android View

首先來(lái)看看我們的layout,如下所示:

                                               

如上所示,在ViewFlipper中放置多個(gè)layout(接下來(lái)會(huì)在不同的layout中來(lái)回滑動(dòng)),ViewFlipper在同一個(gè)頁(yè)面就顯示其中一個(gè)layout。

ViewFlipper中的四個(gè)layout很簡(jiǎn)單,我們就放置一張圖片,如下所示:

    

接下來(lái)我們來(lái)看看Activity,我們的Activity需要實(shí)現(xiàn)兩個(gè)接口OnGestureListener,OnTouchListener。具體的代碼如下所示,代碼中都有相應(yīng)的注釋?zhuān)@里就不再詳述。

package com.ideasandroid.demo;  import android.app.Activity;  import android.os.Bundle;  import android.view.GestureDetector;  import android.view.MotionEvent;  import android.view.View;  import android.view.GestureDetector.OnGestureListener;  import android.view.View.OnTouchListener;  import android.view.animation.AccelerateInterpolator;  import android.view.animation.Animation;  import android.view.animation.TranslateAnimation;  import android.widget.ViewFlipper;  public class ViewFlipperDemo extends Activity implementsOnGestureListener,OnTouchListener{      private ViewFlipper mFlipper;      GestureDetector mGestureDetector;      private int mCurrentLayoutState;      private static final int FLING_MIN_DISTANCE = 100;      private static final int FLING_MIN_VELOCITY = 200;         @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);          mFlipper = (ViewFlipper) findViewById(R.id.flipper);          //注冊(cè)一個(gè)用于手勢(shì)識(shí)別的類(lèi)          mGestureDetector = new GestureDetector(this);          //給mFlipper設(shè)置一個(gè)listener          mFlipper.setOnTouchListener(this);          mCurrentLayoutState = 0;          //允許長(zhǎng)按住ViewFlipper,這樣才能識(shí)別拖動(dòng)等手勢(shì)          mFlipper.setLongClickable(true);      }         /**       * 此方法在本例中未用到,可以指定跳轉(zhuǎn)到某個(gè)頁(yè)面       * @param switchTo       */      public void switchLayoutStateTo(int switchTo) {          while (mCurrentLayoutState != switchTo) {              if (mCurrentLayoutState > switchTo) {                  mCurrentLayoutState--;                  mFlipper.setInAnimation(inFromLeftAnimation());                  mFlipper.setOutAnimation(outToRightAnimation());                  mFlipper.showPrevious();              } else {                  mCurrentLayoutState++;                  mFlipper.setInAnimation(inFromRightAnimation());                  mFlipper.setOutAnimation(outToLeftAnimation());                  mFlipper.showNext();              }             }          ;      }         /**       * 定義從右側(cè)進(jìn)入的動(dòng)畫(huà)效果       * @return       */      protected Animation inFromRightAnimation() {          Animation inFromRight = new TranslateAnimation(                  Animation.RELATIVE_TO_PARENT, +1.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f);          inFromRight.setDuration(500);          inFromRight.setInterpolator(new AccelerateInterpolator());          return inFromRight;      }         /**       * 定義從左側(cè)退出的動(dòng)畫(huà)效果       * @return       */      protected Animation outToLeftAnimation() {          Animation outtoLeft = new TranslateAnimation(                  Animation.RELATIVE_TO_PARENT, 0.0f,                  Animation.RELATIVE_TO_PARENT, -1.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f);          outtoLeft.setDuration(500);          outtoLeft.setInterpolator(new AccelerateInterpolator());          return outtoLeft;      }         /**       * 定義從左側(cè)進(jìn)入的動(dòng)畫(huà)效果       * @return       */      protected Animation inFromLeftAnimation() {          Animation inFromLeft = new TranslateAnimation(                  Animation.RELATIVE_TO_PARENT, -1.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f);          inFromLeft.setDuration(500);          inFromLeft.setInterpolator(new AccelerateInterpolator());          return inFromLeft;      }         /**       * 定義從右側(cè)退出時(shí)的動(dòng)畫(huà)效果       * @return       */      protected Animation outToRightAnimation() {          Animation outtoRight = new TranslateAnimation(                  Animation.RELATIVE_TO_PARENT, 0.0f,                  Animation.RELATIVE_TO_PARENT, +1.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f,                  Animation.RELATIVE_TO_PARENT, 0.0f);          outtoRight.setDuration(500);          outtoRight.setInterpolator(new AccelerateInterpolator());          return outtoRight;      }         public boolean onDown(MotionEvent e) {          // TODO Auto-generated method stub          return false;      }         /*       * 用戶(hù)按下觸摸屏、快速移動(dòng)后松開(kāi)即觸發(fā)這個(gè)事件       * e1:第1個(gè)ACTION_DOWN MotionEvent       * e2:最后一個(gè)ACTION_MOVE MotionEvent       * velocityX:X軸上的移動(dòng)速度,像素/秒       * velocityY:Y軸上的移動(dòng)速度,像素/秒       * 觸發(fā)條件 :       * X軸的坐標(biāo)位移大于FLING_MIN_DISTANCE,且移動(dòng)速度大于FLING_MIN_VELOCITY個(gè)像素/秒       */      public boolean onFling(MotionEvent e1, MotionEvent e2, floatvelocityX,              float velocityY) {          if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE                  && Math.abs(velocityX) > FLING_MIN_VELOCITY) {              // 當(dāng)像左側(cè)滑動(dòng)的時(shí)候              //設(shè)置View進(jìn)入屏幕時(shí)候使用的動(dòng)畫(huà)              mFlipper.setInAnimation(inFromRightAnimation());              //設(shè)置View退出屏幕時(shí)候使用的動(dòng)畫(huà)              mFlipper.setOutAnimation(outToLeftAnimation());              mFlipper.showNext();          } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE                  && Math.abs(velocityX) > FLING_MIN_VELOCITY) {              // 當(dāng)像右側(cè)滑動(dòng)的時(shí)候              mFlipper.setInAnimation(inFromLeftAnimation());              mFlipper.setOutAnimation(outToRightAnimation());              mFlipper.showPrevious();          }          return false;      }         public void onLongPress(MotionEvent e) {          // TODO Auto-generated method stub         }         public boolean onScroll(MotionEvent e1, MotionEvent e2, floatdistanceX,              float distanceY) {          return false;      }         public void onShowPress(MotionEvent e) {          // TODO Auto-generated method stub         }         public boolean onSingleTapUp(MotionEvent e) {          // TODO Auto-generated method stub          return false;      }      public boolean onTouch(View v, MotionEvent event) {          // 一定要將觸屏事件交給手勢(shì)識(shí)別類(lèi)去處理(自己處理會(huì)很麻煩的)          return mGestureDetector.onTouchEvent(event);      }  }

關(guān)于Android手勢(shì)識(shí)別ViewFlipper觸摸動(dòng)畫(huà)的示例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


網(wǎng)頁(yè)題目:Android手勢(shì)識(shí)別ViewFlipper觸摸動(dòng)畫(huà)的示例分析
網(wǎng)頁(yè)URL:http://weahome.cn/article/pccsgh.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部