Let's take a look.
Welcome_glide.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ViewFlipper android:id="@+id/viewflipper" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
Java code
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.GestureDetector; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.view.GestureDetector.OnGestureListener; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.ViewFlipper; import static android.view.KeyEvent.KEYCODE_BACK; public class WelcomeGlide extends Activity implements OnGestureListener{ private static final String TAG = "Fuchangle.AggHelp"; private int mScreenWidth ; private int mScreenHeight ; private GestureDetector detector; private ViewFlipper flipper; private int mIndexHelpPic = 0; private int[] mBgList = { R.drawable.guide01, R.drawable.guide02, R.drawable.guide03, R.drawable.guide04, R.drawable.guide05 }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.welcome_glide); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); mScreenWidth = dm.widthPixels; mScreenHeight = dm.heightPixels; if(mScreenWidth <240){ mScreenWidth = 240; } if(mScreenHeight < 320){ mScreenHeight = 320; } flipper = (ViewFlipper)this.findViewById(R.id.viewflipper); flipper.addView(addImageByID(mBgList[mIndexHelpPic]), new ViewGroup.LayoutParams (ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT)); detector = new GestureDetector(this); } @Override public boolean onDown(MotionEvent e) { return false; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if(e1.getX()-e2.getX() > 120){ if(++mIndexHelpPic >= mBgList.length){ mIndexHelpPic = mBgList.length - 1; backToMainDesk(); return true; } this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out)); flipper.addView(addImageByID(mBgList[mIndexHelpPic]),new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); this.flipper.showNext(); }else if(e1.getX() - e2.getX()< -120){ if(--mIndexHelpPic < 0){ mIndexHelpPic = 0; return true; } 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 true; } private void backToMainDesk(){ startActivity(new Intent(this,QQActivity.class)); finish(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KEYCODE_BACK: backToMainDesk(); return true; default: break; } return super.onKeyDown(keyCode, event); } private View addImageByID(int id){ ImageView img = new ImageView(this); img.setImageResource(id); img.setAdjustViewBounds(true); img.setMaxWidth(mScreenWidth); img.setMaxHeight(mScreenHeight); img.setScaleType(ImageView.ScaleType.FIT_XY); return img; } @Override public boolean onTouchEvent(MotionEvent event) { Log.i("Fling", "Activity onTouchEvent!"); return this.detector.onTouchEvent(event); } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } }
Put the following files in RES/anim
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="1.0" 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="1.0" 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="0" android:toXDelta="100%p" android:duration="500" /> <alpha android:fromAlpha="1.0" 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="-100%p" android:toXDelta="0" android:duration="500" /> <alpha android:fromAlpha="1.0" android:toAlpha="1.0" android:duration="500" /> </set>
Original article: http://fuchangle.iteye.com/admin/blogs/1497208
II:
[Code = Java]
Package com. SL. quwei. UI. Manage;
Import Android. App. activity;
Import Android. content. intent;
Import Android. OS. Bundle;
Import Android. util. displaymetrics;
Import Android. util. log;
Import Android. View .*;
Import Android. View. animation. animationutils;
Import Android. widget .*;
Import com. SL. quwei. quweiapplication;
Import com. SL. quwei. R;
Import static Android. View. keyevent. keycode_back;
/**
* Created by intellij idea.
* User: Wulong
* Date: 12-2-22
* Time: AM
* To change this template use file | Settings | file templates.
*/
Public class agghelp extends activity implements gesturedetector. ongesturelistener {
Private Static final string tag = "quwei. agghelp ";
Private int mscreenwidth = 240;
Private int mscreenheight = 320;
Private gesturedetector detector;
Private viewflipper Flipper;
Private int mindexhelppic = 0;
Private int [] mbglist = {
R. drawable. agg_help01, // The image needed for sliding
R. drawable. agg_help02,
R. drawable. agg_help03,
R. drawable. agg_help04,
R. drawable. agg_help05,
R. drawable. agg_help06
};
/**
* Called when the activity is first created.
*/
@ Override
Public void oncreate (bundle savedinstancestate ){
Super. oncreate (savedinstancestate );
Setcontentview (R. layout. agg_bangzhuzhiyin );
Charsequence Title = gettitle ();
String loginname = (quweiapplication) getapplication (). getloginusername ();
String titlename = aggtools. getnewtitle (title, loginname );
Settitle (titlename );
Displaymetrics dm = new displaymetrics ();
Getwindowmanager (). getdefaultdisplay (). getmetrics (DM );
Mscreenwidth = DM. widthpixels;
Mscreenheight = DM. heightpixels;
If (mscreenwidth <240 ){
Mscreenwidth = 240;
}
If (mscreenheight <320 ){
Mbscreenheight = 320;
}
Flipper = (viewflipper) This. findviewbyid (R. Id. viewflipper01 );
// Flipper. addview (addbuttonbytext ("button"), new layoutparams (layoutparams. fill_parent, layoutparams. wrap_content ));
Flipper. addview (addimagebyid (mbglist [mindexhelppic]), new viewgroup. layoutparams (viewgroup. layoutparams. fill_parent, viewgroup. layoutparams. wrap_content ));
Detector = new gesturedetector (this );
}
Private void backtomaindesk (){
Startactivity (new intent (this, aggmanage. Class ));
Finish ();
}
Public Boolean onkeydown (INT keycode, keyevent event ){
Switch (keycode ){
Case keycode_back:
Backtomaindesk ();
Return true;
Default:
Break;
}
Return super. onkeydown (keycode, event );
}
Private view addimagebyid (int id ){
Imageview IMG = new imageview (this );
IMG. setimageresource (ID );
IMG. setadjustviewbounds (true );
IMG. setmaxwidth (mscreenwidth );
IMG. setmaxheight (mscreenheight );
IMG. setscaletype (imageview. scaletype. fit_xy );
Return IMG;
}
Public View addbuttonbytext (string text ){
Button BTN = new button (this );
BTN. settext (text );
Return BTN;
}
Public View addtextbytext (string text ){
Textview TV = new textview (this );
TV. settext (text );
TV. setgravity (1 );
Return TV;
}
@ Override
Public Boolean ontouchevent (motionevent event ){
Log. I ("Fling", "activity ontouchevent! ");
Return this. detector. ontouchevent (event );
}
@ Override
Public Boolean ondown (motionevent e ){
// Todo auto-generated method stub
Return false;
}
/**
* Listen to slide
*/
@ Override
Public Boolean onfling (motionevent E1, motionevent E2, float velocityx,
Float velocityy ){
// Todo auto-generated method stub
Log. I ("Fling", "fling happened! ");
If (e1.getx ()-e2.getx ()> 120 ){
If (++ mindexhelppic> = mbglist. Length ){
Mindexhelppic = mbglist. Length-1;
Backtomaindesk ();
Return true;
}
This. Flipper. setinanimation (animationutils. loadanimation (this, R. anim. push_left_in ));
This. Flipper. setoutanimation (animationutils. loadanimation (this, R. anim. push_left_out ));
// This. Flipper. addview (addtextbytext ("text box"), new layoutparams (layoutparams. fill_parent, layoutparams. wrap_content ));
Flipper. addview (addimagebyid (mbglist [mindexhelppic]), new viewgroup. layoutparams (viewgroup. layoutparams. fill_parent, viewgroup. layoutparams. wrap_content ));
This. Flipper. shownext ();
Return true;
} Else if (e1.getx ()-e2.getx () <-120 ){
If (-- mindexhelppic <0 ){
Mindexhelppic = 0;
Return true;
}
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 true;
}
@ 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;
}
}
[/Code]
Configuration file:
Agg_bangzhuzhiyin.xml
[Code = HTML]
<? 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"
Android: Background = "@ drawable/agg_sub_bg">
<Viewflipper Android: Id = "@ + ID/viewflipper01"
Android: layout_width = "fill_parent"
Android: layout_height = "fill_parent">
</Viewflipper>
</Linearlayout>
[/Code]
Put push_left_in.xml in anim
[Code = HTML]
<? 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>
[/Code]
Put push_left_out.xml in anim
[Code = HTML]
<? 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>
[/Code]
Put push_right_in.xml in anim
[Code = HTML]
<? 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>
[/Code]
Put push_right_out.xml in anim
[Code = HTML]
<? 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>
[/Code]