viewFlipperの概要と簡単な応用--ページをスライドする機能
8735 ワード
先日、ViewFlipperを利用して、資料を整理して、後で使うために、まずViewFlipper類の継承関係を見てみましょう.
FrameLayoutとViewAnimatorを継承し、彼の概要を見てみましょう.
Simple
彼の主なxml属性と共通の方法:
属性名
説明
android:autoStart
trueに設定すると、自動起動アニメーションはブール値でなければなりません.属性値はtrueまたはfalse(グローバルリソース属性R.attr.autoStartに対応)です.
android:flipInterval
次のビューを表示する間隔
以上の内容は農民のおじさんのブログを参考にします.http://www.cnblogs.com/over140/archive/2010/12/06/1897439.html
ViewFlipperの基本的な知識については、まずたくさん話します.簡単な例を見てみましょう.
この例では、簡単なアニメーション効果を使用していますが、ページを飛びたい場合は?つまり、以下にいくつかのページタグがあり、クリックして対応するページに入ると、どのように実現しますか?
java.lang.Object
android.view.View
android.view.ViewGroup
android.widget.FrameLayout
android.widget.ViewAnimator
android.widget.ViewFlipper
FrameLayoutとViewAnimatorを継承し、彼の概要を見てみましょう.
Simple
ViewAnimator
that will animate between two or more views that have been added to it. Only one child is shown at a time. If requested, can automatically flip between each child at a regular interval.(ViewFlipperに追加された2つ以上のビューの間で簡単なViewAnimatorアニメーションが実行されます.一度に1つのサブビューしか表示できません.必要に応じて、サブビューのスライドのように自動的に表示する間隔を設定できます).彼の主なxml属性と共通の方法:
属性名
説明
android:autoStart
trueに設定すると、自動起動アニメーションはブール値でなければなりません.属性値はtrueまたはfalse(グローバルリソース属性R.attr.autoStartに対応)です.
android:flipInterval
次のビューを表示する間隔
public bool isAutoStart ()
startFlipping() , true
public bool isFlipping()
, true
public bool setAutoStart (bool autoStart)
startFlipping()
public bool setFlipInterval (int milliseconds)
milliseconds
public bool startFlipping ()
public bool stopFlipping ()
setInAnimation() View 。 ,
, android.view.animation.Animation;
, Context int, Context Animation resourceID。
Animation , Animation resourceID。
setOutAnimation() View 。 setInAnimation 。
showNext() FrameLayout View。
showPrevious() FrameLayout View。
以上の内容は農民のおじさんのブログを参考にします.http://www.cnblogs.com/over140/archive/2010/12/06/1897439.html
ViewFlipperの基本的な知識については、まずたくさん話します.簡単な例を見てみましょう.
public class TestFlip 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.ViewFlipper01);
flipper.addView(addTextView("step 1"));
flipper.addView(addTextView("step 2"));
flipper.addView(addTextView("step 3"));
flipper.addView(addTextView("step 4"));
flipper.addView(addTextView("step 5"));
}
private View addTextView(String text) {
TextView tv = new TextView(this);
tv.setText(text);
tv.setGravity(1);
return tv;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
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;
}
}
この例では、簡単なアニメーション効果を使用していますが、ページを飛びたい場合は?つまり、以下にいくつかのページタグがあり、クリックして対応するページに入ると、どのように実現しますか?
public void switchLayoutStateTo(int switchTo) {
while (mCurrentLayoutState != switchTo) {
if (mCurrentLayoutState > switchTo) {
mCurrentLayoutState--;
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();
} else { mCurrentLayoutState++; 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();
} } ; }
mCrrentLayoutStatesは のページ です.
に、GestureDetectorというジェスチャークラスが です.このクラスは なジェスチャーイベントを し、2つのコールバックインタフェースがそれぞれ のイベントを するために されます.
GestureDetector.OnDoubleTapListener:マウスのダブルクリックイベントに たDoubleTapイベントを するために されます.このインタフェースには、 の3つのコールバック があります.
1. onDoubleTap(MotionEvent e): DoubleTap ,
2. onDoubleTapEvent(MotionEvent e): DoubleTap , down、up move ( , DoubleTap , DoubleTap down up , );
3. onSingleTapConfirmed(MotionEvent e): SingleTap DoubleTap, DoubleTap , ,OPhone SingleTap DoubleTap, SingleTapConfirmed 。
GestureDetector.OnGestureListener: のジェスチャーイベントを するために されます.このインタフェースには、 の6つのコールバック があります.1. onDown(MotionEvent e):down ;
2. onSingleTapUp(MotionEvent e): up ;
3. onShowPress(MotionEvent e):down move up ;
4. onLongPress(MotionEvent e): ;
5. onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY): ;
6. onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY): 。
コードを てみましょう. な はonFling()メソッドです.@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;
}
スライド が120 pxより きいと、 のインタフェースに ります.にある
onFling()メソッドには4つのパラメータがあり、e 1が のACTION_DOWN MotionEvent,e 2 のACTION_MOVE MotionEvent
かりやすいです.スライド 、パラメータvelocityX、velocityYを ることができますか?velocityXとvelocityYは にはX とY の であり、 は / である.この2つのパラメータを み わせると,スライドの を し,より くの を うことができる.
ページをめくる
ViewPageを したクラスlauncher のスライド
ページスライド り え(クラスLauncherスライドスクリーン )
Launcher -- スライドスクリーン ソース
では、ここまで きましょう. のコード:
http://download.csdn.net/detail/aomandeshangxiao/4192243