<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_layout" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ViewFlipper android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="@android:color/white" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_centerInParent="true" android:textSize="140px" android:textStyle="bold"/> </RelativeLayout>
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // listener , LinearLayout mainLayout = (LinearLayout) findViewById(R.id.main_layout); mainLayout.setOnTouchListener(this); // ViewFlipper flipper = (ViewFlipper) findViewById(R.id.flipper); // View flipper LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); int layouts[] = new int[]{ R.layout.first, R.layout.second, R.layout.third, R.layout.fourth }; for (int layout : layouts) flipper.addView(inflater.inflate(layout, null)); }
boolean onTouch(View view, MotionEvent event)
public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // , .. // fromPosition - X fromPosition = event.getX(); break; case MotionEvent.ACTION_UP: // , .. float toPosition = event.getX(); if (fromPosition > toPosition) flipper.showNext(); else if (fromPosition < toPosition) flipper.showPrevious(); default: break; } return true; }
... if (fromPosition > toPosition) { flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.go_next_in)); flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.go_next_out)); flipper.showNext(); } else if (fromPosition < toPosition) { flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.go_prev_in)); flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.go_prev_out)); flipper.showPrevious(); } ...
<?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="400"/> <alpha android:fromAlpha="1.0" android:toAlpha="1.0" android:duration="400" /> </set>
... // ACTION_UP case MotionEvent.ACTION_MOVE: float toPosition = event.getX(); // MOVE_LENGTH - X, . // MOVE_LENGTH = 150 if ((fromPosition - MOVE_LENGTH) > toPosition) { fromPosition = toPosition; flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.go_next_in)); flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.go_next_out)); flipper.showNext(); } else if ((fromPosition + MOVE_LENGTH) < toPosition) { fromPosition = toPosition; flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.go_prev_in)); flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.go_prev_out)); flipper.showPrevious(); } ...
Source: https://habr.com/ru/post/118482/
All Articles