Android左右滑動效果的程式碼實現
我們經常會在Android應用中看到左右滑動的效果,那麼這種左右滑動效果是如何實現的呢?本文通過對Android程式碼的講解,來分析Android中左右滑動效果的程式碼實現,希望對你有所幫助。
本示例演示在Android中實現圖片左右滑動效果。
關於滑動效果,在Android中用得比較多,本示例實現的滑動效果是使用ViewFlipper來實現的,當然也可以使用其它的View來實現。接下來就讓我們開始實現這種效果。為了方便大家理解,我們先來看一下效果圖:
接下來我們看一下程式結構圖:
MainActivity檔案中程式碼:
package com.android.flip; 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.animation.AnimationUtils; import android.widget.ImageView; import android.widget.ViewFlipper; /** * Android實現左右滑動效果 * @Description: Android實現左右滑動效果 * @File: MainActivity.java * @Package com.android.flip * @Author Hanyonglu * @Date 2012-02-12 上午10:44:04 * @Version V1.0 */ public class MainActivity extends Activity implements OnGestureListener { private ViewFlipper flipper; private GestureDetector detector; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); detector = new GestureDetector(this); flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper1); flipper.addView(addImageView(R.drawable.one)); flipper.addView(addImageView(R.drawable.two)); flipper.addView(addImageView(R.drawable.three)); flipper.addView(addImageView(R.drawable.four)); flipper.addView(addImageView(R.drawable.five)); } private View addImageView(int id) { ImageView iv = new ImageView(this); iv.setImageResource(id); return iv; } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub return this.detector.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (e1.getX() - e2.getX() > 120) { this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out)); this.flipper.showNext(); return true; } else if (e1.getX() - e2.getX() < -120) { this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out)); this.flipper.showPrevious(); return true; } return false; } @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; } }
佈局介面相對比較簡單,我們只需要加入ViewFlipper就可以,程式碼如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ViewFlipper android:id="@+id/ViewFlipper1" android:layout_width="fill_parent" android:layout_height="fill_parent"> </ViewFlipper> </LinearLayout>
為了使其滑動時有一定的特效,我們需要加入Animation效果,說到Animation,我們先看下如何在Android中實現自定義Animation。自定義的Animation是以XML格式定義的,定義好的XML檔案存放在res/anim中。
一般的Animation有以下四種型別:
1. Alpha:漸變透明度動畫效果
2. Scale:漸變尺寸伸縮動畫效果
3. Translate:畫面轉換位置移動動畫效果
4. Rotate:畫面轉換位置移動動畫效果
push_left_in.xml檔案中程式碼:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="500" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="500" /> </set>
push_left_out.xml檔案中程式碼:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="500" /> </set>
push_right_in.xml檔案中程式碼:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="500" /> <alpha android:fromAlpha="0.1" android:toAlpha="1.0" android:duration="500" /> </set>
push_right_out.xml檔案中程式碼:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.1" android:duration="500" /> </set>
相關文章
- 微信小程式實現卡片左右滑動效果微信小程式
- js左右滑動選項卡效果程式碼例項JS
- ListView 實現帶有Filpper效果的左右滑動刪除 ItemView
- Android實現Activity的滑動返回效果Android
- jquery實現的滑動軸效果程式碼例項jQuery
- android的左右側滑選單實現Android
- JavaScript左右拖動滑動的按鈕效果JavaScript
- Android 禁止ViewPager左右滑動AndroidViewpager
- jQuery滑動方式上下左右滾動效果jQuery
- android 全域性頁面滑動返回聯動效果的實現Android
- ViewPager實現左右無限迴圈滑動Viewpager
- 考拉Android全域性滑動返回及聯動效果的實現Android
- MVVM框架下實現左右滑動切換tabMVVM框架
- 直播平臺原始碼,純JS實現左右滑動輪播圖原始碼JS
- 【Android初級】如何實現一個比相簿更高大上的左右滑動特效(附原始碼)Android特效原始碼
- 用Flutter實現一個仿“探探”的左右滑動選擇喜歡/不喜歡的效果Flutter
- Android 具有左右滑動功能的時間軸Android
- css實現圖片上下左右居中效果程式碼例項CSS
- jquery實現的滑動門程式碼例項jQuery
- jquery實現滑動門效果詳解jQuery
- 實現抖音 “影片無限滑動“效果
- uni-app 實現滑動列表(slider)頁面效果 完整程式碼示例APPIDE
- 滑鼠滑過實現淡入淡出效果程式碼例項
- Android導航選單橫向左右滑動並和下方的控制元件實現聯動Android控制元件
- js拖動實現左右圖片對比效果JS
- jQuery實現滑動門程式碼例項jQuery
- jQuery實現的管理員許可權左右移動效果jQuery
- 左右迴圈滑動的viewpagerViewpager
- 用Activity的onTouchEvent方法實現監聽手指上下左右滑動
- 微信小程式-能左右滑動的訂單列表微信小程式
- 手機直播原始碼,實現圖片瀑布流式滑動效果原始碼
- 直播小程式原始碼,小程式頁面左右滑動如何解決原始碼
- (十)如果實現滑動展示選單效果
- css實現的左右兩列自適應等高效果程式碼例項CSS
- css3實現的div上下左右翻轉效果程式碼例項CSSS3
- 在程式碼中實現android:tint效果Android
- Android 設定TextView滑動滾動條和滑動效果AndroidTextView
- CSS實現頁面切換時的滑動效果CSS