標籤:
直接看代碼
1.MainActivity.java:
package org.yayun.demo;import android.app.Activity;import android.os.Bundle;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.ViewGroup.LayoutParams;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.ImageView;import android.widget.ViewFlipper;public class MainActivity extends Activity implementsandroid.view.GestureDetector.OnGestureListener {private int[] imgs = { R.drawable.img1, R.drawable.img2, R.drawable.img3 };private GestureDetector gestureDetector;private ViewFlipper viewFlipper;private Activity mActivity;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mActivity = this;viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);gestureDetector = new GestureDetector(this);//手勢監聽for (int i = 0; i < imgs.length; i++) { // 加入圖片源ImageView iv = new ImageView(this);iv.setImageResource(imgs[i]);iv.setScaleType(ImageView.ScaleType.FIT_XY);viewFlipper.addView(iv, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));}viewFlipper.setAutoStart(true); // 設定自己主動播放功能(點擊事件,前自己主動播放)viewFlipper.setFlipInterval(3000);//間隔3秒if (viewFlipper.isAutoStart() && !viewFlipper.isFlipping()) {viewFlipper.startFlipping();}}@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubviewFlipper.stopFlipping(); // 點擊事件後。停止自己主動播放viewFlipper.setAutoStart(false);return gestureDetector.onTouchEvent(event); // 注冊手勢事件}public boolean onDown(MotionEvent arg0) {// TODO Auto-generated method stubreturn false;}public boolean onFling(MotionEvent e1, MotionEvent e2, float arg2,float arg3) {if (e2.getX() - e1.getX() > 120) { // 從左向右滑動(左進右出)Animation rInAnim = AnimationUtils.loadAnimation(mActivity,R.layout.push_right_in); // 向右滑動左側進入的漸層效果(alpha 0.1 -> 1.0)Animation rOutAnim = AnimationUtils.loadAnimation(mActivity,R.layout.push_right_out); // 向右滑動右側滑出的漸層效果(alpha 1.0 -> 0.1)viewFlipper.setInAnimation(rInAnim);viewFlipper.setOutAnimation(rOutAnim);viewFlipper.showPrevious();return true;} else if (e2.getX() - e1.getX() < -120) { // 從右向左滑動(右進左出)Animation lInAnim = AnimationUtils.loadAnimation(mActivity,R.layout.push_left_in); // 向左滑動左側進入的漸層效果(alpha 0.1 -> 1.0)Animation lOutAnim = AnimationUtils.loadAnimation(mActivity,R.layout.push_left_out); // 向左滑動右側滑出的漸層效果(alpha 1.0 -> 0.1)viewFlipper.setInAnimation(lInAnim);viewFlipper.setOutAnimation(lOutAnim);viewFlipper.showNext();return true;}return true;}public void onLongPress(MotionEvent arg0) {// TODO Auto-generated method stub}public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,float arg3) {// TODO Auto-generated method stubreturn false;}public void onShowPress(MotionEvent arg0) {// TODO Auto-generated method stub}public boolean onSingleTapUp(MotionEvent arg0) {// TODO Auto-generated method stubreturn false;}}
2.active_main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ViewFlipper android:id="@+id/viewflipper" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
以下看四個動畫檔案,非常easy.
1.push_left_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="1500" android:fromXDelta="100%p" android:toXDelta="0" /> <!-- 位移 --> <alpha android:duration="1500" android:fromAlpha="0.1" android:toAlpha="1.0" /> <!-- 漸層 --></set>
2.push_left_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="1500" android:fromXDelta="0" android:toXDelta="-100%p" /> <alpha android:duration="1500" android:fromAlpha="1.0" android:toAlpha="0.1" /> </set>
3.push_right_in.xml
<?xml version="1.0" encoding="utf-8"?
> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="1500" android:fromXDelta="-100%p" android:toXDelta="0" /> <alpha android:duration="1500" android:fromAlpha="0.1" android:toAlpha="1.0" /> </set>
4.push_right_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="1500" android:fromXDelta="0" android:toXDelta="100%p" /> <alpha android:duration="1500" android:fromAlpha="1.0" android:toAlpha="0.1" /> </set>
執行實比例如以下:
求關注,謝謝
著作權聲明:本文博主原創文章,部落格,未經同意不得轉載。
Android真正簡單的教程-第十二槍(ViewFlipper實現滑動效果)