Android ViewFilgger+GestrueDetector用手势实现滑动

xiaoxiao2021-02-28  65

left_in:<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" > <translate android:fromXDelta="-100%p" android:toXDelta="0" > </translate> <rotate android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" ></rotate> </set> left_out: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" > <translate android:fromXDelta="0" android:toXDelta="-100%p" > </translate> <rotate android:fromDegrees="0" android:toDegrees="-360" android:pivotX="50%" android:pivotY="50%" > </rotate> </set>right_in: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" > <translate android:fromXDelta="100%p" android:toXDelta="0" > </translate> <rotate android:fromDegrees="0" android:toDegrees="-360" android:pivotX="50%" android:pivotY="50%" ></rotate> </set>right_out: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:duration="1000" > <translate android:fromXDelta="0" android:toXDelta="100%p" > </translate> <rotate android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%" android:pivotY="50%" > </rotate> </set> <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zking.y2_android20_gestrue.MainActivity"> <ViewFlipper android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vf_main_image" > </ViewFlipper></LinearLayout> public class MainActivity extends AppCompatActivity { private ViewFlipper viewFlipper; private int []images={R.drawable.image2,R.drawable.image3,R.drawable.image4}; private GestureDetector gd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //ViewFlipper容器用来装图片 viewFlipper = (ViewFlipper) findViewById(R.id.vf_main_image); for (int i = 0; i < images.length; i++) { ImageView iv=new ImageView(this); iv.setImageResource(images[i]);   viewFlipper.addView(iv); } //实例化一个手势检测器的类 gd = new GestureDetector(this, new GestureDetector.OnGestureListener() { @Override public boolean onDown(MotionEvent motionEvent) { Log.i("test","按下:onDown"); return false; } @Override public void onShowPress(MotionEvent motionEvent) { Log.i("test","按下但还未抬起:onShowPress"); } @Override public boolean onSingleTapUp(MotionEvent motionEvent) { Log.i("test","按一下,立即抬起:onSingleTapUp"); return false; } @Override public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) { Log.i("test","滚动:onScroll"); return false; } @Override public void onLongPress(MotionEvent motionEvent) { Log.i("test","长时间按下:onLongPress"); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float v, float v1) { Log.i("test","拖动:onFling"); if(e2.getX()-e1.getX()>200){ Toast.makeText(MainActivity.this, "右滑,上一张", Toast.LENGTH_SHORT).show(); viewFlipper.showPrevious(); //左进右出 viewFlipper.setInAnimation(MainActivity.this,R.anim.left_in); viewFlipper.setOutAnimation(MainActivity.this,R.anim.right_out); } if(e1.getX()-e2.getX()>200){ Toast.makeText(MainActivity.this, "左滑,下一张", Toast.LENGTH_SHORT).show(); viewFlipper.showNext(); //左出右进 viewFlipper.setInAnimation(MainActivity.this,R.anim.right_in); viewFlipper.setOutAnimation(MainActivity.this,R.anim.left_out); } return false; } }); } @Override public boolean onTouchEvent(MotionEvent event) { return gd.onTouchEvent(event); } }
转载请注明原文地址: https://www.6miu.com/read-41346.html

最新回复(0)