ViewFlipper+GestureDetector实现不循环滑动

在布局文件中entering.xml 

<ViewFlipper
        android:id="@+id/entering_vf"
        android:layout_width="fill_parent"
        android:layout_height="350dip"
        android:flipInterval="1000"
        android:persistentDrawingCache="animation"
        android:visibility="invisible" >

        <include
            android:id="@+id/entering_carpart01"
            layout="@layout/entering_carpart01" />

        <include
            android:id="@+id/entering_carpart02"
            layout="@layout/entering_carpart02" />
    </ViewFlipper>

       

   布局文件 entering_carpart01

      

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="390dip"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="40dip"
            android:layout_marginTop="20dip"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center" >

                <ImageView
                    android:id="@+id/entering_iv_carpre"
                    android:layout_width="293dip"
                    android:layout_height="151dip"
                    android:layout_marginLeft="100dip"
                    android:background="@drawable/car_01" />

                <ImageButton
                    android:id="@+id/entering_imbtn_preCarPreWindow"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="240dip"
                    android:layout_marginTop="8dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_preCarLight"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="160dip"
                    android:layout_marginTop="50dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_preCarPre"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="243dip"
                    android:layout_marginTop="30dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_preCarPlate"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="243dip"
                    android:layout_marginTop="83dip" />

                <ImageView
                    android:id="@+id/entering_iv_carbehind"
                    android:layout_width="253dip"
                    android:layout_height="162dip"
                    android:layout_marginLeft="500dip"
                    android:background="@drawable/car_02" />

                <ImageButton
                    android:id="@+id/entering_imbtn_behindCar_windown"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="620dip"
                    android:layout_marginTop="20dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_behindCar_middle"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="620dip"
                    android:layout_marginTop="68dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_behindCar_bottom"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="620dip"
                    android:layout_marginTop="103dip" />
            </FrameLayout>
        </LinearLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center" >

            <ImageView
                android:background="@drawable/car_03" 
                android:id="@+id/entering_iv_carleft"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="240dip"
               />

            <ImageButton
                android:id="@+id/entering_imbtn_sideCar_top"
                style="@style/entering_imageviewRed_style"
                android:layout_marginLeft="430dip" />

            <ImageButton
                android:id="@+id/entering_imbtn_sideCar_door"
                style="@style/entering_imageviewRed_style"
                android:layout_marginLeft="470dip"
                android:layout_marginTop="45dip" />

            <ImageButton
                android:id="@+id/entering_imbtn_sideCar_carwheels"
                style="@style/entering_imageviewRed_style"
                android:layout_marginLeft="350dip"
                android:layout_marginTop="35dip" />
        </FrameLayout>
    </LinearLayout>

</LinearLayout>


   布局文件  entering_carpart02

  

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="390dip"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="40dip"
            android:layout_marginTop="20dip"
            android:gravity="center_horizontal"
            android:orientation="horizontal" >

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center" >

                <ImageView
                    android:id="@+id/entering_iv_carpre"
                    android:layout_width="293dip"
                    android:layout_height="151dip"
                    android:layout_marginLeft="100dip"
                    android:background="@drawable/car_01" />

                <ImageButton
                    android:id="@+id/entering_imbtn_preCarPreWindow"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="240dip"
                    android:layout_marginTop="8dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_preCarLight"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="160dip"
                    android:layout_marginTop="50dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_preCarPre"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="243dip"
                    android:layout_marginTop="30dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_preCarPlate"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="243dip"
                    android:layout_marginTop="83dip" />

                <ImageView
                    android:id="@+id/entering_iv_carbehind"
                    android:layout_width="253dip"
                    android:layout_height="162dip"
                    android:layout_marginLeft="500dip"
                    android:background="@drawable/car_02" />

                <ImageButton
                    android:id="@+id/entering_imbtn_behindCar_windown"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="620dip"
                    android:layout_marginTop="20dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_behindCar_middle"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="620dip"
                    android:layout_marginTop="68dip" />

                <ImageButton
                    android:id="@+id/entering_imbtn_behindCar_bottom"
                    style="@style/entering_imageviewRed_style"
                    android:layout_marginLeft="620dip"
                    android:layout_marginTop="103dip" />
            </FrameLayout>
        </LinearLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center" >

            <ImageView
                android:background="@drawable/car_03" 
                android:id="@+id/entering_iv_carleft"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="240dip"
               />

            <ImageButton
                android:id="@+id/entering_imbtn_sideCar_top"
                style="@style/entering_imageviewRed_style"
                android:layout_marginLeft="430dip" />

            <ImageButton
                android:id="@+id/entering_imbtn_sideCar_door"
                style="@style/entering_imageviewRed_style"
                android:layout_marginLeft="470dip"
                android:layout_marginTop="45dip" />

            <ImageButton
                android:id="@+id/entering_imbtn_sideCar_carwheels"
                style="@style/entering_imageviewRed_style"
                android:layout_marginLeft="350dip"
                android:layout_marginTop="35dip" />
        </FrameLayout>
    </LinearLayout>

</LinearLayout>

 java代码

 

 在EnteringActivity.Activity   java文件中

private ViewFlipper viewFlipper;
// 定义一个手势识别器
private GestureDetector mGestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {

viewFlipper = (ViewFlipper) findViewById(R.id.entering_vf);
mGestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {

			public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

				if (Math.abs(velocityX) < 100)
					return true;

				if (Math.abs(e2.getRawY() - e1.getRawY()) > 100)
					return true;

				if (e2.getRawX() - e1.getRawX() > 100) {
					// 从右到左的移动
					if (viewFlipper.getDisplayedChild() == 0) {
						//viewFlipper对象没有子view的时候,停止滑动						
                                                  viewFlipper.stopFlipping();
                                                  return false;
					} else {
						showPre();
						return false;
					}

				}
				if (e2.getRawX() - e1.getRawX() < -100) {
					if (viewFlipper.getDisplayedChild() == 2 - 1) {
						//viewFlipper对象等于1的时候,停止滑动						
                                                 viewFlipper.stopFlipping();
                                                 return false;
					} else {
						showNext();
						return false;
					}
				}
				return false;

			};
		});
 

  关键就是要把  手势识别器 注册到 当前的Activity 的滑动方法里面

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// 当手指在屏幕上触摸的时候 利用手势识别器 识别相应的动作
		mGestureDetector.onTouchEvent(event);
		return super.onTouchEvent(event);
	}
  

 

 

 

	public void Imv1() {
		imvred.setBackgroundDrawable(new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.point_red)));
		imvpurple.setBackgroundDrawable(new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.position_point)));
	}

	public void Imv2() {
		imvred.setBackgroundDrawable(new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.position_point)));
		imvpurple.setBackgroundDrawable(new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.point_red)));
	}

	protected void showPre() {
		Animation outAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha_out);
		Animation inAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha_in);
		viewFlipper.setOutAnimation(outAnimation);
		viewFlipper.setInAnimation(inAnimation);

		viewFlipper.showPrevious();

		Imv1();
	}

	private void showNext() {
		Animation outAnimation = AnimationUtils.loadAnimation(this, R.anim.tran_out);
		Animation inAnimation = AnimationUtils.loadAnimation(this, R.anim.tran_in);
		viewFlipper.setOutAnimation(outAnimation);
		viewFlipper.setInAnimation(inAnimation);
		viewFlipper.showNext();
		Imv2();
	}

  

你可能感兴趣的:(java,android)