本示例演示在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 stubreturn this.detector.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stubreturn 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 stubreturn false; } @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stubreturn false; } }
布局界面相對比較簡單,我們只需要加入ViewFlipper就可以,代碼如下:
< 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文件中代碼:
<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文件中代碼:
< 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文件中代碼:
<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文件中代碼:
<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>
如果大家想實現帶指引效果的左右滑動,請訪問博文:http://www.cnblogs.com/hanyonglu/archive/2012/04/07/2435589.html
如果想實現帶漸顯按鈕的左右滑動效果,請訪問博文:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2350171.html
下載地址:點擊下載
最后,希望轉載的朋友能夠尊重作者的勞動成果,加上轉載地址:http://www.cnblogs.com/hanyonglu/archive/2012/02/13/2349827.html 謝謝。
結束。^_^