Android實(shí)現(xiàn)頁(yè)面滑動(dòng)切換動(dòng)畫(huà)
本文實(shí)例為大家分享了Android實(shí)現(xiàn)頁(yè)面滑動(dòng)切換動(dòng)畫(huà)的具體代碼,供大家參考,具體內(nèi)容如下
實(shí)現(xiàn)兩個(gè)頁(yè)面滑動(dòng)切換,一些相冊(cè)的效果也是如此
一個(gè)Activity的界面配置文件
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <!--ViewFlipper里面的子控件可以被看成一頁(yè)--> <ViewFlipper android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/viewFlipper" > <!-- 第一頁(yè) --> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#339900" > <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="第一頁(yè)" /> </LinearLayout> <!-- 第二頁(yè) --> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="第二頁(yè)" /> </LinearLayout> </ViewFlipper> </LinearLayout>
MainActivity.java:
package com.example.activitymove; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ViewFlipper; public class MainActivity extends Activity { private ViewFlipper viewFlipper; private float startX; private float endX; private Animation in_lefttoright; private Animation out_lefttoright; private Animation in_righttoleft; private Animation out_righttoleft; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); in_lefttoright=AnimationUtils.loadAnimation(this, R.anim.enter_lefttoright); out_lefttoright=AnimationUtils.loadAnimation(this, R.anim.out_lefttoright); in_righttoleft=AnimationUtils.loadAnimation(this, R.anim.enter_righttoleft); out_righttoleft=AnimationUtils.loadAnimation(this, R.anim.out_righttoleft); viewFlipper=(ViewFlipper) this.findViewById(R.id.viewFlipper); } //處理觸屏?xí)r間的方法 //手在屏幕上向右滑動(dòng)然后松開(kāi)翻下一頁(yè),向左翻顯示前一頁(yè) public boolean onTouchEvent(MotionEvent event) { if(event.getAction()==MotionEvent.ACTION_DOWN){ //記錄手放在屏幕上的點(diǎn)位置 startX=event.getX(); }else if(event.getAction()==MotionEvent.ACTION_UP){ //記錄手離開(kāi)屏幕上的點(diǎn)位置 endX=event.getX(); if(endX>startX){ viewFlipper.setInAnimation(in_lefttoright); viewFlipper.setOutAnimation(out_lefttoright); viewFlipper.showNext();//顯示下一頁(yè) }else if(endX<startX){ viewFlipper.setInAnimation(in_righttoleft); viewFlipper.setOutAnimation(out_righttoleft); viewFlipper.showPrevious();//顯示前一頁(yè) } return true; } return super.onTouchEvent(event); } }
在res/anim/文件夾下有
enter_lefttoright.xml和enter_righttoleft.xml
out_lefttoright.xml和out_righttoleft.xml
四個(gè)動(dòng)畫(huà)配置文件:
enter_lefttoright.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="1000" /> </set>
enter_righttoleft.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <!-- 這里用到了平移動(dòng)畫(huà),這里只動(dòng)x軸坐標(biāo)就可以了 -100%p:這就是屏幕的寬度:這里的p代表parent,父元素的寬度,都是 手機(jī)屏幕寬度,第一頁(yè)要從-100%p移動(dòng)到0,持續(xù)5秒中. --> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="1000" /> </set>
out_lefttoright.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="1000" /> </set>
out_righttoleft.xml:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="1000" /> </set>
效果:用手向右滑動(dòng),整個(gè)頁(yè)面向右慢慢滑動(dòng),切換頁(yè)面,用手向左滑動(dòng),整個(gè)頁(yè)面向左慢慢滑動(dòng),切換頁(yè)面。
(將配置文件換成其他的動(dòng)畫(huà)效果也可以,本例子使用的是移入移出的動(dòng)畫(huà)效果)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android仿京東頂部搜索框滑動(dòng)伸縮動(dòng)畫(huà)效果
- Android實(shí)現(xiàn)手勢(shì)滑動(dòng)和簡(jiǎn)單動(dòng)畫(huà)效果
- Android程序開(kāi)發(fā)之使用Design包實(shí)現(xiàn)QQ動(dòng)畫(huà)側(cè)滑效果和滑動(dòng)菜單導(dǎo)航
- Android編程實(shí)現(xiàn)ViewPager多頁(yè)面滑動(dòng)切換及動(dòng)畫(huà)效果的方法
- Android Tween動(dòng)畫(huà)之RotateAnimation實(shí)現(xiàn)圖片不停旋轉(zhuǎn)效果實(shí)例介紹
- android實(shí)現(xiàn)圖片閃爍動(dòng)畫(huà)效果的兩種實(shí)現(xiàn)方式(實(shí)用性高)
- Android Glide圖片加載(加載監(jiān)聽(tīng)、加載動(dòng)畫(huà))
- Android圖片翻轉(zhuǎn)動(dòng)畫(huà)簡(jiǎn)易實(shí)現(xiàn)代碼
- Android實(shí)現(xiàn)圖片點(diǎn)擊預(yù)覽效果(zoom動(dòng)畫(huà))
- Android實(shí)現(xiàn)ViewFlipper圖片動(dòng)畫(huà)滑動(dòng)
相關(guān)文章
android 獲取本機(jī)其他app的版本信息的示例代碼
本篇文章主要介紹了android 獲取本機(jī)其他app的版本信息的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-09-09Android CountDownTimer實(shí)現(xiàn)定時(shí)器和倒計(jì)時(shí)效果
這篇文章主要為大家詳細(xì)介紹了Android CountDownTimer實(shí)現(xiàn)定時(shí)器和倒計(jì)時(shí)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02Android 自定義一套 Dialog通用提示框 (代碼庫(kù))
這篇文章主要介紹了Android 自定義一套 Dialog通用提示框 (代碼庫(kù)),需要的朋友可以參考下2017-04-04淺析Android圓形進(jìn)度條ProgressBar如何實(shí)現(xiàn)固定進(jìn)度
之前遇到一個(gè)問(wèn)題,發(fā)現(xiàn)Android里的圓形進(jìn)度條無(wú)法固定一個(gè)進(jìn)度,所以這篇文章就來(lái)和大家探索一下圓形進(jìn)度條ProgressBar如何實(shí)現(xiàn)固定進(jìn)度,希望對(duì)大家有所幫助2024-03-03Android實(shí)現(xiàn)擴(kuò)大View點(diǎn)擊區(qū)域的三種方式
在 Android 應(yīng)用開(kāi)發(fā)中,有時(shí)候需要擴(kuò)大 View 的點(diǎn)擊區(qū)域以提高用戶交互的便利性,尤其是當(dāng)視圖元素較小或用戶界面密集時(shí),以下提供幾種擴(kuò)大點(diǎn)擊區(qū)域的思路,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-08-08Android編程實(shí)現(xiàn)下載時(shí)主界面與詳細(xì)界面一致更新的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)下載時(shí)主界面與詳細(xì)界面一致更新的方法,涉及Android事件監(jiān)聽(tīng)及界面動(dòng)態(tài)更新相關(guān)操作技巧,需要的朋友可以參考下2017-11-11Android實(shí)現(xiàn)支付寶支付密碼輸入界面
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)支付寶支付密碼輸入界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05