Android實現(xiàn)手勢滑動和簡單動畫效果
一、手勢滑動
1.Activity都具有響應觸摸事件,也就是說只要觸摸Activity,他都會回調(diào)一個onTouchEvent()方法。但是在這個方法里無法處理事件,需要配合使用手勢識別器(GestureDetector)中的方法onTouchEvent對事件(event)進行分析處理,我們只需要重寫這個方法中的操作來達到我們的需求。
/** * activity被觸摸后,會回調(diào)此方法onTouchEvent,并回傳一個event對象 * event對象封裝了觸摸時的動作信息,包括x、y坐標等等信息 */ @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub boolean onTouchEvent = gestureDetector.onTouchEvent(event); //如果這個方法消費了這個這個event事件,就返回True,否則false。 return super.onTouchEvent(event); }
2.我們需要根據(jù)滑動手勢做界面跳轉(zhuǎn),GestureDetector封裝了可以監(jiān)聽不同手勢的方法。這個方法在哪個Activity中使用,這個Activity就能監(jiān)聽這個Activity接收的動作,在這些方法里可以重寫需要的動作。
GestureDetector gestureDetector = new GestureDetector(this, new OnGestureListener(){ @Override public boolean onDown(MotionEvent e) { // 按下 return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // 點擊 return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // 滑動 return false; } @Override public void onLongPress(MotionEvent e) { // 長按 } /** *滑動, e1為起點坐標,e2為終點坐標 *在這里消費掉event事件,重寫其中的方法以達到需求。 / @Override public boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) { if(e1.getRawX()-e2.getRawX()>200){ flingnextpage(); //向左滑(與滑動動畫配合效果較好) }else if(e2.getRawX()-e1.getRawX()>200){ flingpreviouspage();//向右滑 } if(Math.abs(e1.getRawY()-e2.getRawY())>200){ System.out.println("不能斜著滑動"); return true;//true表示我們消費了這個觸摸事件 } if(Math.abs(velocityX)<150 ||Math.abs(velocityY)<100){ System.out.println("滑動的太慢了,請滑快點"); return true; } return true; } });
注:頁面坐標
二、簡單動畫
目的:用XML文件寫一個Activity跳轉(zhuǎn)頁面的過渡動畫。
1. 在res目錄下新建anim文件夾,創(chuàng)建兩個xml文件并編輯動畫動作,一個是進入動作,另一個退出動作。
(1)在anim_next_in.xml中寫好進入動作。
<?xml version="1.0" encoding="utf-8"?> <translate android:fromXDelta="100%p" <!—當前界面的右側(cè)界面,從右側(cè)滑入當前界面--> android:toXDelta="0" android:duration="100" <!--移動時間--> xmlns:android="http://schemas.android.com/apk/res/android"> </translate>
(2)在anim_next_out.xml中寫好退出動作。
<?xml version="1.0" encoding="utf-8"?> <translate android:fromXDelta="0" <!—當前界面向左滑出--> android:toXDelta="-100%p" android:duration="100" xmlns:android="http://schemas.android.com/apk/res/android"> </translate>
2.調(diào)用Activity的overridePendingTransition方法,來實現(xiàn)平移動畫。
/** * overridePendingTransition(int enterAnim, int exitAnim) * enterAnim為進入當前界面的動畫資源ID, exitAnim為退出當前界面的動畫資源ID / @Override public void flingnextpage() { // TODO Auto-generated method stub startActivity(new Intent(this, NewActivity.class)); overridePendingTransition(R.anim.anim_next_in, R.anim.anim_next_out); finish();//關(guān)閉當前界面 }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android仿京東頂部搜索框滑動伸縮動畫效果
- Android實現(xiàn)頁面滑動切換動畫
- Android程序開發(fā)之使用Design包實現(xiàn)QQ動畫側(cè)滑效果和滑動菜單導航
- Android編程實現(xiàn)ViewPager多頁面滑動切換及動畫效果的方法
- Android Tween動畫之RotateAnimation實現(xiàn)圖片不停旋轉(zhuǎn)效果實例介紹
- android實現(xiàn)圖片閃爍動畫效果的兩種實現(xiàn)方式(實用性高)
- Android Glide圖片加載(加載監(jiān)聽、加載動畫)
- Android圖片翻轉(zhuǎn)動畫簡易實現(xiàn)代碼
- Android實現(xiàn)圖片點擊預覽效果(zoom動畫)
- Android實現(xiàn)ViewFlipper圖片動畫滑動
相關(guān)文章
詳解Android ConstraintLayout 約束布局的用法
本篇文章主要介紹了詳解Android ConstraintLayout 約束布局的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02Android?Studio實現(xiàn)購買售賣系統(tǒng)
這篇文章主要為大家詳細介紹了Android?Studio實現(xiàn)購買售賣系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02Android中不同狀態(tài)頁面管理優(yōu)化技巧詳解
在Android中,不管是activity或者fragment,在加載視圖的時候都有可能會出現(xiàn)多種不同的狀態(tài)頁面View,所以本文就來聊聊Android中不同狀態(tài)頁面管理優(yōu)化吧2024-04-04Android 物理游戲之重力系統(tǒng)開發(fā)示例代碼
介紹Android 物理游戲之重力系統(tǒng),這里提供了詳細的資料整理,并附示例代碼和實現(xiàn)效果圖,有興趣的小伙伴可以參考下2016-08-08Android Compose實現(xiàn)底部按鈕以及首頁內(nèi)容詳細過程
這篇文章主要介紹了如何利用compose框架制作app底部按鈕以及首頁內(nèi)容的詳細代碼,具有一定價值,感興趣的可以了解一下2021-11-11Android Socket服務端與客戶端用字符串的方式互相傳遞圖片的方法
這篇文章主要介紹了Android Socket服務端與客戶端用字符串的方式互相傳遞圖片的方法的相關(guān)資料,需要的朋友可以參考下2016-05-05