Android實(shí)現(xiàn)手勢滑動(dòng)和簡單動(dòng)畫效果
一、手勢滑動(dòng)
1.Activity都具有響應(yīng)觸摸事件,也就是說只要觸摸Activity,他都會(huì)回調(diào)一個(gè)onTouchEvent()方法。但是在這個(gè)方法里無法處理事件,需要配合使用手勢識(shí)別器(GestureDetector)中的方法onTouchEvent對(duì)事件(event)進(jìn)行分析處理,我們只需要重寫這個(gè)方法中的操作來達(dá)到我們的需求。
/**
* activity被觸摸后,會(huì)回調(diào)此方法onTouchEvent,并回傳一個(gè)event對(duì)象
* event對(duì)象封裝了觸摸時(shí)的動(dòng)作信息,包括x、y坐標(biāo)等等信息
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
boolean onTouchEvent = gestureDetector.onTouchEvent(event);
//如果這個(gè)方法消費(fèi)了這個(gè)這個(gè)event事件,就返回True,否則false。
return super.onTouchEvent(event);
}
2.我們需要根據(jù)滑動(dòng)手勢做界面跳轉(zhuǎn),GestureDetector封裝了可以監(jiān)聽不同手勢的方法。這個(gè)方法在哪個(gè)Activity中使用,這個(gè)Activity就能監(jiān)聽這個(gè)Activity接收的動(dòng)作,在這些方法里可以重寫需要的動(dòng)作。
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) {
// 點(diǎn)擊
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
// 滑動(dòng)
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// 長按
}
/**
*滑動(dòng), e1為起點(diǎn)坐標(biāo),e2為終點(diǎn)坐標(biāo)
*在這里消費(fèi)掉event事件,重寫其中的方法以達(dá)到需求。
/
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) {
if(e1.getRawX()-e2.getRawX()>200){
flingnextpage(); //向左滑(與滑動(dòng)動(dòng)畫配合效果較好)
}else if(e2.getRawX()-e1.getRawX()>200){
flingpreviouspage();//向右滑
}
if(Math.abs(e1.getRawY()-e2.getRawY())>200){
System.out.println("不能斜著滑動(dòng)");
return true;//true表示我們消費(fèi)了這個(gè)觸摸事件
}
if(Math.abs(velocityX)<150 ||Math.abs(velocityY)<100){
System.out.println("滑動(dòng)的太慢了,請(qǐng)滑快點(diǎn)");
return true;
}
return true;
}
});
注:頁面坐標(biāo)

二、簡單動(dòng)畫
目的:用XML文件寫一個(gè)Activity跳轉(zhuǎn)頁面的過渡動(dòng)畫。
1. 在res目錄下新建anim文件夾,創(chuàng)建兩個(gè)xml文件并編輯動(dòng)畫動(dòng)作,一個(gè)是進(jìn)入動(dòng)作,另一個(gè)退出動(dòng)作。

(1)在anim_next_in.xml中寫好進(jìn)入動(dòng)作。
<?xml version="1.0" encoding="utf-8"?> <translate android:fromXDelta="100%p" <!—當(dāng)前界面的右側(cè)界面,從右側(cè)滑入當(dāng)前界面--> android:toXDelta="0" android:duration="100" <!--移動(dòng)時(shí)間--> xmlns:android="http://schemas.android.com/apk/res/android"> </translate>
(2)在anim_next_out.xml中寫好退出動(dòng)作。
<?xml version="1.0" encoding="utf-8"?> <translate android:fromXDelta="0" <!—當(dāng)前界面向左滑出--> android:toXDelta="-100%p" android:duration="100" xmlns:android="http://schemas.android.com/apk/res/android"> </translate>
2.調(diào)用Activity的overridePendingTransition方法,來實(shí)現(xiàn)平移動(dòng)畫。
/**
* overridePendingTransition(int enterAnim, int exitAnim)
* enterAnim為進(jìn)入當(dāng)前界面的動(dòng)畫資源ID, exitAnim為退出當(dāng)前界面的動(dòng)畫資源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)閉當(dāng)前界面
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android仿京東頂部搜索框滑動(dòng)伸縮動(dòng)畫效果
- Android實(shí)現(xiàn)頁面滑動(dòng)切換動(dòng)畫
- Android程序開發(fā)之使用Design包實(shí)現(xiàn)QQ動(dòng)畫側(cè)滑效果和滑動(dòng)菜單導(dǎo)航
- Android編程實(shí)現(xiàn)ViewPager多頁面滑動(dòng)切換及動(dòng)畫效果的方法
- Android Tween動(dòng)畫之RotateAnimation實(shí)現(xiàn)圖片不停旋轉(zhuǎn)效果實(shí)例介紹
- android實(shí)現(xiàn)圖片閃爍動(dòng)畫效果的兩種實(shí)現(xiàn)方式(實(shí)用性高)
- Android Glide圖片加載(加載監(jiān)聽、加載動(dòng)畫)
- Android圖片翻轉(zhuǎn)動(dòng)畫簡易實(shí)現(xiàn)代碼
- Android實(shí)現(xiàn)圖片點(diǎn)擊預(yù)覽效果(zoom動(dòng)畫)
- Android實(shí)現(xiàn)ViewFlipper圖片動(dòng)畫滑動(dòng)
相關(guān)文章
詳解Android ConstraintLayout 約束布局的用法
本篇文章主要介紹了詳解Android ConstraintLayout 約束布局的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02
Android?Studio實(shí)現(xiàn)購買售賣系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Android?Studio實(shí)現(xiàn)購買售賣系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Android中不同狀態(tài)頁面管理優(yōu)化技巧詳解
在Android中,不管是activity或者fragment,在加載視圖的時(shí)候都有可能會(huì)出現(xiàn)多種不同的狀態(tài)頁面View,所以本文就來聊聊Android中不同狀態(tài)頁面管理優(yōu)化吧2024-04-04
Android 物理游戲之重力系統(tǒng)開發(fā)示例代碼
介紹Android 物理游戲之重力系統(tǒng),這里提供了詳細(xì)的資料整理,并附示例代碼和實(shí)現(xiàn)效果圖,有興趣的小伙伴可以參考下2016-08-08
Android實(shí)現(xiàn)倒計(jì)時(shí)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)倒計(jì)時(shí)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
Android 拍照并對(duì)照片進(jìn)行裁剪和壓縮實(shí)例詳解
這篇文章主要介紹了Android 拍照并對(duì)照片進(jìn)行裁剪和壓縮實(shí)例詳解的相關(guān)資料,這里提供實(shí)例代碼,需要的朋友可以參考下2017-07-07
Android Compose實(shí)現(xiàn)底部按鈕以及首頁內(nèi)容詳細(xì)過程
這篇文章主要介紹了如何利用compose框架制作app底部按鈕以及首頁內(nèi)容的詳細(xì)代碼,具有一定價(jià)值,感興趣的可以了解一下2021-11-11
Android Socket服務(wù)端與客戶端用字符串的方式互相傳遞圖片的方法
這篇文章主要介紹了Android Socket服務(wù)端與客戶端用字符串的方式互相傳遞圖片的方法的相關(guān)資料,需要的朋友可以參考下2016-05-05
Android 自定義view之畫圖板實(shí)現(xiàn)方法
本文重在對(duì)自定義view,以及其常用類,常用方法的初步了解,提供一個(gè)思路,效果是其次,畫板只是例子,需要的朋友可以參考下2018-01-01

