私はアンドロイド開発の初心者です。Androidのホームタブのような画面を作りたいです。ここでホームタブには2つのビューがあります。ビューを左右にドラッグすると、ビューを移動して次のビューを表示できます。Androidでこれを作成する方法を教えてください。詳細の返信またはチュートリアルのリンクが必要です。
ここにスクリーンショットがあります。これと全く同じものを作りたい。
画面 1
http://screencast.com/t/pJaLLHT74fH0
画面 2
私はアンドロイド開発の初心者です。Androidのホームタブのような画面を作りたいです。ここでホームタブには2つのビューがあります。ビューを左右にドラッグすると、ビューを移動して次のビューを表示できます。Androidでこれを作成する方法を教えてください。詳細の返信またはチュートリアルのリンクが必要です。
ここにスクリーンショットがあります。これと全く同じものを作りたい。
画面 1
http://screencast.com/t/pJaLLHT74fH0
画面 2
これを実装する 1 つの方法は、ViewPager クラスを使用することです。Android の開発者サイトには、ViewPager を使用する方法の優れた説明と例があります。
http://developer.android.com/training/animation/screen-slide.html
代わりに、タブ間をスワイプしたい場合は、次の例も提供されます。
http://developer.android.com/training/implementing-navigation/lateral.html
下部の円インジケーターについては、Jake Wharton の ViewPagerIndicator ライブラリを実装できます。ダウンロードして、いくつかの例をここで見つけることができます: http://viewpagerindicator.com/
view1 と view2 を実装したとします。だから、ここに私の解決策があります:
public class FatherLayout extends RelativeLayout implements GestureDetector.OnGestureListener, GestureDetector.OnScrollListener{
private YourView view1 ;
private YourView view2;
int acitveView; // this var indicates which view is active
// your gesture detector here that you handle the drag events!
private GestureDetectorCompat mDetector;
public FatherLayout(Context context){
super(context);
mDetector = new GestureDetectorCompat(this,this);
mDetector.setOnScrollListener(this);
this.addView(view2); // i assume that you want the view1 appears on the top
this.addView(view1);
activeView = 1;
invalidate();
}
/*Following YOUR GESTURE DETECTOR IMPLEMENTATION HERE*/
@Override
public boolean onTouchEvent(MotionEvent event){
this.mDetector.onTouchEvent(event);
// Be sure to call the superclass implementation
return super.onTouchEvent(event);
}
@Override
public boolean onDown(MotionEvent event) {
Log.d(DEBUG_TAG,"onDown: " + event.toString());
return false;
}
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
Log.d(DEBUG_TAG, "onFling: " + event1.toString()+event2.toString());
return false;
}
@Override
public void onLongPress(MotionEvent event) {
Log.d(DEBUG_TAG, "onLongPress: " + event.toString());
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// HERE YOU WILL DO ALL THE JOB.
// FOR INSTANCE IF YOU WANT TO move the view1 you will call something like this :
if(activeView == 1){
view1.setVisible(View.VISIBLE);
view2.setVisible(View.INVISIBLE);
activeView = 0;
}else if(activeView == 0){
view1.setVisible(View.INVISIBLE);
view2.setVisible(View.VISIBLE);
activeView = 1;
}
return false;
}
@Override
public void onShowPress(MotionEvent event) {
Log.d(DEBUG_TAG, "onShowPress: " + event.toString());
}
@Override
public boolean onSingleTapUp(MotionEvent event) {
Log.d(DEBUG_TAG, "onSingleTapUp: " + event.toString());
return false;
}
@Override
public boolean onDoubleTap(MotionEvent event) {
Log.d(DEBUG_TAG, "onDoubleTap: " + event.toString());
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent event) {
Log.d(DEBUG_TAG, "onDoubleTapEvent: " + event.toString());
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent event) {
Log.d(DEBUG_TAG, "onSingleTapConfirmed: " + event.toString());
return false;
}
}
}