Android偵測(cè)滑動(dòng)手勢(shì)方法_第1頁
Android偵測(cè)滑動(dòng)手勢(shì)方法_第2頁
Android偵測(cè)滑動(dòng)手勢(shì)方法_第3頁
Android偵測(cè)滑動(dòng)手勢(shì)方法_第4頁
Android偵測(cè)滑動(dòng)手勢(shì)方法_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Android滑動(dòng)手勢(shì)偵測(cè)方法介紹時(shí)間:2010-12-01 09:05 來源:51 收藏 復(fù)制分享 共有評(píng)論(0)條在Android手機(jī)操作系統(tǒng)中支持各種滑動(dòng)手勢(shì)的操作。我們?cè)谶@里為大家介紹的方法主要就是針對(duì)這些手勢(shì)如何能在Android平臺(tái)中偵測(cè)出來。下面就讓我們大家一起來看看Android滑動(dòng)手勢(shì)具體的識(shí)別方法吧。Android Activity跳轉(zhuǎn)相關(guān)操作技巧分享Android創(chuàng)建sdcard詳細(xì)圖解Android系統(tǒng)信息查看方法詳解Android數(shù)據(jù)庫相關(guān)代碼解讀Android拍照實(shí)現(xiàn)方式概述Android SDK提供了一個(gè)listener類來偵測(cè)各種不同的手勢(shì):Sim

2、pleOnGestureListener. 你只需要實(shí)現(xiàn)自己所關(guān)心的手勢(shì)就可以了.Swipe在android里面是叫Fling首先創(chuàng)建自己的一個(gè)手勢(shì)detector類:class MyGestureDetector extends SimpleOnGestureListener Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 一個(gè)Android滑動(dòng)手勢(shì)有幾個(gè)特征, 比如是在x或者y軸上近乎直線的劃動(dòng), 中途路徑的偏差不能太大, 而且劃動(dòng)需要一定的速

3、度, 所以我們定義幾個(gè)定量:private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200;然后在onFling方法中, 判斷是不是一個(gè)合理的swipe動(dòng)作:if(e1.getX() - e2.getX() SWIPE_MIN_DISTANCE & Math.abs(velocityX) SWIPE_THRESHOLD_VELOCITY) vie

4、wFlipper.setInAnimation(slideLeftIn); viewFlipper.setOutAnimation(slideLeftOut); viewFlipper.showNext(); else if (e2.getX() - e1.getX() SWIPE_MIN_DISTANCE & Math.abs(velocityX) SWIPE_THRESHOLD_VELOCITY) viewFlipper.setInAnimation(slideRightIn); viewFlipper.setOutAnimation(slideRightOut); viewFlipper

5、.showPrevious(); if(e1.getX() - e2.getX() SWIPE_MIN_DISTANCE & Math.abs(velocityX) SWIPE_THRESHOLD_VELOCITY) viewFlipper.setInAnimation(slideLeftIn); viewFlipper.setOutAnimation(slideLeftOut); viewFlipper.showNext(); else if (e2.getX() - e1.getX() SWIPE_MIN_DISTANCE & Math.abs(velocityX) SWIPE_THRES

6、HOLD_VELOCITY) viewFlipper.setInAnimation(slideRightIn); viewFlipper.setOutAnimation(slideRightOut); viewFlipper.showPrevious(); 這里的viewFlipper是含有多個(gè)view的一個(gè)container, 可以很方便的調(diào)用prev/next view, 加上animation動(dòng)畫, 可以達(dá)到一些不錯(cuò)的效果:viewFlipper = (ViewFlipper)findViewById(R.id.flipper); slideLeftIn = AnimationUtils

7、.loadAnimation(this, R.anim.slide_left_in); slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out); slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in); slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);自定義的animation可以查看具體的XML, 比如從左邊進(jìn)來的

8、一個(gè)動(dòng)畫: 當(dāng)然最后不要忘記在你的Activity中override onTouch方法來獲取手勢(shì)action:Override public boolean onTouchEvent(MotionEvent event) if (gestureDetector.onTouchEvent(event) return true; else return false; Android滑動(dòng)手勢(shì)的相關(guān)識(shí)別方法就為大家介紹到這里。Android滑動(dòng)手勢(shì)偵測(cè)方法介紹時(shí)間:2010-12-01 09:05 來源:51 收藏 復(fù)制分享 共有評(píng)論(0)條在Android手機(jī)操作系統(tǒng)中支持各種滑動(dòng)手

9、勢(shì)的操作。我們?cè)谶@里為大家介紹的方法主要就是針對(duì)這些手勢(shì)如何能在Android平臺(tái)中偵測(cè)出來。下面就讓我們大家一起來看看Android滑動(dòng)手勢(shì)具體的識(shí)別方法吧。Android Activity跳轉(zhuǎn)相關(guān)操作技巧分享Android創(chuàng)建sdcard詳細(xì)圖解Android系統(tǒng)信息查看方法詳解Android數(shù)據(jù)庫相關(guān)代碼解讀Android拍照實(shí)現(xiàn)方式概述Android SDK提供了一個(gè)listener類來偵測(cè)各種不同的手勢(shì):SimpleOnGestureListener. 你只需要實(shí)現(xiàn)自己所關(guān)心的手勢(shì)就可以了.Swipe在android里面是叫Fling首先創(chuàng)建自己的一個(gè)手勢(shì)detector類:clas

10、s MyGestureDetector extends SimpleOnGestureListener Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 一個(gè)Android滑動(dòng)手勢(shì)有幾個(gè)特征, 比如是在x或者y軸上近乎直線的劃動(dòng), 中途路徑的偏差不能太大, 而且劃動(dòng)需要一定的速度, 所以我們定義幾個(gè)定量:private static final int SWIPE_MIN_DISTANCE = 120; private static final in

11、t SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200;然后在onFling方法中, 判斷是不是一個(gè)合理的swipe動(dòng)作:if(e1.getX() - e2.getX() SWIPE_MIN_DISTANCE & Math.abs(velocityX) SWIPE_THRESHOLD_VELOCITY) viewFlipper.setInAnimation(slideLeftIn); viewFlipper.setOutAnimation(slideLeftOut); viewFli

12、pper.showNext(); else if (e2.getX() - e1.getX() SWIPE_MIN_DISTANCE & Math.abs(velocityX) SWIPE_THRESHOLD_VELOCITY) viewFlipper.setInAnimation(slideRightIn); viewFlipper.setOutAnimation(slideRightOut); viewFlipper.showPrevious(); if(e1.getX() - e2.getX() SWIPE_MIN_DISTANCE & Math.abs(velocityX) SWIPE

13、_THRESHOLD_VELOCITY) viewFlipper.setInAnimation(slideLeftIn); viewFlipper.setOutAnimation(slideLeftOut); viewFlipper.showNext(); else if (e2.getX() - e1.getX() SWIPE_MIN_DISTANCE & Math.abs(velocityX) SWIPE_THRESHOLD_VELOCITY) viewFlipper.setInAnimation(slideRightIn); viewFlipper.setOutAnimation(sli

14、deRightOut); viewFlipper.showPrevious(); 這里的viewFlipper是含有多個(gè)view的一個(gè)container, 可以很方便的調(diào)用prev/next view, 加上animation動(dòng)畫, 可以達(dá)到一些不錯(cuò)的效果:viewFlipper = (ViewFlipper)findViewById(R.id.flipper); slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in); slideLeftOut = AnimationUtils.loadAnimation(

15、this, R.anim.slide_left_out); slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in); slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);自定義的animation可以查看具體的XML, 比如從左邊進(jìn)來的一個(gè)動(dòng)畫: 當(dāng)然最后不要忘記在你的Activity中override onTouch方法來獲取手勢(shì)action:Override public boolean onTouchE

16、vent(MotionEvent event) if (gestureDetector.onTouchEvent(event) return true; else return false; Android滑動(dòng)手勢(shì)的相關(guān)識(shí)別方法就為大家介紹到這里。android滑動(dòng)分頁 實(shí)現(xiàn)原理通過手指的滑動(dòng),判斷數(shù)據(jù)大小然后動(dòng)態(tài)改變數(shù)據(jù)底部的加載是一個(gè)viewimport android.app.ListActivity;import android.os.Bundle;import android.os.Handler;import android.view.Gravity;import android.

17、view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.AbsListView.OnScrollListener;import an

18、droid.widget.LinearLayout.LayoutParams;public class Test extends ListActivity implements OnScrollListener Aleph0 adapter = new Aleph0(); int lastItem = 0; int mProgressStatus = 0; private Handler mHandler = new Handler(); ProgressBar progressBar; protected void onCreate(Bundle savedInstanceState) su

19、per.onCreate(savedInstanceState); LinearLayout searchLayout = new LinearLayout(this); searchLayout.setOrientation(LinearLayout.HORIZONTAL); progressBar = new ProgressBar(this); progressBar.setPadding(0, 0, 15, 0); searchLayout.addView(progressBar,new LinearLayout.LayoutParams( LinearLayout.LayoutPar

20、ams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ); TextView textView = new TextView(this); textView.setText(加載中.); textView.setGravity(Gravity.CENTER_VERTICAL); searchLayout.addView(textView,new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL

21、_PARENT ); searchLayout.setGravity(Gravity.CENTER); LinearLayout loadingLayout = new LinearLayout(this); loadingLayout.addView(searchLayout,new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ); loadingLayout.setGravity(Gravity.CENTER); getLi

22、stView().addFooterView(loadingLayout); / Start lengthy operation in a background thread/ new Thread(new Runnable() / public void run() / while (mProgressStatus = totalCount; if (loadMore) adapter.count += visibleCount; / or any other amount adapter.notifyDataSetChanged(); public void onScrollStateCh

23、anged(AbsListView v, int s) class Aleph0 extends BaseAdapter int count = 40 ; /* starting amount */ public int getCount() return count; public Object getItem( int pos) return pos; public long getItemId( int pos) return pos; public View getView( int pos, View v, ViewGroup p) TextView view = new TextV

24、iew(EndLessActivity. this ); view.setText( entry + pos); return view; listview下部是按鈕控制:package com.ScrollListView;import Android.app.ListActivity;import Android.os.Bundle;import Android.view.Gravity;import Android.view.View;import Android.view.ViewGroup;import Android.widget.AbsListView;import Androi

25、d.widget.BaseAdapter;import Android.widget.Button;import Android.widget.LinearLayout;import Android.widget.ProgressBar;import Android.widget.TextView;import Android.widget.AbsListView.OnScrollListener;public class EndLessActivity extends ListActivity Aleph0 adapter = new Aleph0(); int mProgressStatu

26、s = 0 ; protected void onCreate(Bundle savedInstanceState) super .onCreate(savedInstanceState); LinearLayout searchLayout = new LinearLayout( this ); searchLayout.setOrientation(LinearLayout.HORIZONTAL); Button textView = new Button( this ); textView.setText( 加載中. ); textView.setGravity(Gravity.CENT

27、ER_VERTICAL); searchLayout.addView(textView, new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT ); searchLayout.setGravity(Gravity.CENTER); LinearLayout loadingLayout = new LinearLayout( this ); loadingLayout.addView(searchLayout, new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT ); loadingLayout.setGravity

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論