如何在android中使用滑动手势实现滚动浏览视图寻呼机

时间:2015-06-11 13:37:42

标签: android android-fragments gesturedetector

我必须通过组合多个图像来制作图像,图像在同一位置一个接一个地放置

我有9种不同的图像阵列,可以通过选择特定的数组来改变图像

所有这些图像都是透明的图像,一个放在另一个上面,我必须通过滚动选择一个图像来改变

我已经使用了滑动手势,因为它工作正常,但我想在这个

中滚动查看寻呼机

这是我的代码。

   import java.util.Random;

import com.example.toros1.ImageSelector;
import com.example.toros1.SimpleGestureFilter;

import android.app.Fragment;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.animation.TranslateAnimation;
import android.webkit.WebView.FindListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.toros1.R;
import com.example.toros1.fragment.ShakeDetector.OnShakeListener;

public class Main_Fragment extends Fragment implements OnTouchListener, OnShakeListener{
    ImageView image1 , image2, image3,image4,image5,image6,image7,image8,image9,image10;
    Boolean direction=false;
    private SimpleGestureFilter detector;
    private GestureDetector gestureDetector;
    private SensorManager mSensorManager;
    private Sensor mAccelerometer;
    private ShakeDetector mShakeDetector;
    public static int index=0;
    public static int count,index0,index1,index2,index3,index4,index5,index6,index7,index8,index9;
    TextView imagename;
    Button random;
    public static int resId1=R.drawable.albahio,resId2=R.drawable.bien_armado,resId3=R.drawable.axiblanco,resId4=R.drawable.careto,resId5=R.drawable.bociblanco,resId6=R.drawable.alunarado,resId7=R.drawable.cinchado,resId8=R.drawable.lloron,resId9=R.drawable.bragado;

    public  static int imagelocation;
@SuppressWarnings("deprecation")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
     View view = inflater.inflate(R.layout.fragmentlayout, null);
     image1= (ImageView) view.findViewById(R.id.imageView1);
     image2= (ImageView) view.findViewById(R.id.imageView2);
     image3= (ImageView) view.findViewById(R.id.imageView3);
     image4= (ImageView) view.findViewById(R.id.imageView4);
     image5= (ImageView) view.findViewById(R.id.imageView5);
     image6= (ImageView) view.findViewById(R.id.imageView6);
     image7= (ImageView) view.findViewById(R.id.imageView7);
     image8= (ImageView) view.findViewById(R.id.imageView8);
     image9= (ImageView) view.findViewById(R.id.imageView9);
     random=(Button) view.findViewById(R.id.random);
     imagename=(TextView) view.findViewById(R.id.text);
     imagename.setText(ImageSelector.bottomImageName[0]);


      random.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        setRandomImage();
    }
});
        detector = new SimpleGestureFilter();
        gestureDetector = new GestureDetector(detector);

         mSensorManager = (SensorManager)getActivity().getSystemService(getActivity().SENSOR_SERVICE);
            mAccelerometer = mSensorManager
                    .getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
            mShakeDetector = new ShakeDetector();
        mShakeDetector.setOnShakeListener(this);

        view.setOnTouchListener(this);
        return view;

}

                // TODO Auto-generated method stub


    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {
        // TODO Auto-generated method stub

        if (gestureDetector.onTouchEvent(arg1)) {

            if (detector.isRightToLeft) {
                count = 1;
                switch (imagelocation) {

                case 0:
                    index0=index;
                    index0 = changeIndexForward(ImageSelector.bottom_image);

                    setImageName(index0, ImageSelector.bottomImageName);
                    resId1 = ImageSelector.bottom_image[index0];
                    setImage(image1, ImageSelector.bottom_image, index0, count);
                    break;
                case 1:
                    index1=index;
                    index1 = changeIndexForward(ImageSelector.horns);
                    setImageName(index1, ImageSelector.hornsImageName);
                    resId2 = ImageSelector.horns[index1];
                    setImage(image2, ImageSelector.horns, index1, count);
                    break;
                case 2:
                    index2=index;
                    index2 = changeIndexForward(ImageSelector.feet);
                    setImageName(index2, ImageSelector.feetImageName);
                    resId3 = ImageSelector.feet[index2];
                    setImage(image3, ImageSelector.feet, index2, count);
                    break;
                case 3:
                    index3=index;
                    index3 = changeIndexForward(ImageSelector.forehead);
                    setImageName(index3, ImageSelector.foreheadImageName);
                    resId4 = ImageSelector.forehead[index3];
                    setImage(image4, ImageSelector.forehead, index3, count);
                    break;
                case 4:
                    index4=index;
                    index4 = changeIndexForward(ImageSelector.mouthimage);
                    setImageName(index4, ImageSelector.mouthimageImageName);
                    resId5 = ImageSelector.mouthimage[index4];
                    setImage(image5, ImageSelector.mouthimage, index4, count);
                    break;
                case 5:
                    index5=index;
                    index5 = changeIndexForward(ImageSelector.upperimage);
                    setImageName(index5, ImageSelector.upperimageImageName);
                    resId6 = ImageSelector.upperimage[index5];
                    setImage(image6, ImageSelector.upperimage, index5, count);
                    break;
                case 6:
                    index6=index;
                    index6 = changeIndexForward(ImageSelector.lowerscreen);
                    setImageName(index6, ImageSelector.lowerscreenImageName);
                    resId7 = ImageSelector.lowerscreen[index6];
                    setImage(image7, ImageSelector.lowerscreen, index6, count);
                    break;
                case 7:
                    index7=index;
                    index7 = changeIndexForward(ImageSelector.eyes);
                    setImageName(index7, ImageSelector.eyesImageName);
                    resId8 = ImageSelector.eyes[index7];
                    setImage(image8, ImageSelector.eyes, index7, count);
                    break;
                case 8:
                    index8=index;
                    index8 = changeIndexForward(ImageSelector.top_rightimage);
                    setImageName(index8, ImageSelector.topImageName);
                    resId9 = ImageSelector.top_rightimage[index8];
                    setImage(image9, ImageSelector.top_rightimage, index8, count);
                    break;
                }
                detector.isRightToLeft = false;
            } else if (detector.isLeftToRight) {
                count = 0;
                switch (imagelocation) {
                case 0:
                    index0=index;
                    index0 = changeIndexForward(ImageSelector.bottom_image);
                    setImageName(index0, ImageSelector.bottomImageName);
                    resId1 = ImageSelector.bottom_image[index0];

                    setImage(image1, ImageSelector.bottom_image, index0, count);
                    break;

                case 1:
                    index1=index;
                    index1 = changeIndexForward(ImageSelector.horns);
                    setImageName(index1, ImageSelector.hornsImageName);
                    resId2 = ImageSelector.horns[index1];
                    setImage(image2, ImageSelector.horns, index1, count);
                    break;
                case 2:
                    index2=index;
                    index2 = changeIndexForward(ImageSelector.feet);
                    setImageName(index2, ImageSelector.feetImageName);
                    resId3 = ImageSelector.feet[index2];
                    setImage(image3, ImageSelector.feet, index2, count);
                    break;
                case 3:
                    index3=index;
                    index3 = changeIndexForward(ImageSelector.forehead);
                    setImageName(index3, ImageSelector.foreheadImageName);
                    resId4 = ImageSelector.forehead[index3];
                    setImage(image4, ImageSelector.forehead, index3, count);
                    break;
                case 4:
                    index4=index;
                    index4 = changeIndexForward(ImageSelector.mouthimage);
                    setImageName(index4, ImageSelector.mouthimageImageName);
                    resId5 = ImageSelector.mouthimage[index4];
                    setImage(image5, ImageSelector.mouthimage, index4, count);
                    break;
                case 5:
                    index5=index;
                    index5 = changeIndexForward(ImageSelector.upperimage);
                    setImageName(index5, ImageSelector.upperimageImageName);
                    resId6 = ImageSelector.upperimage[index5];
                    setImage(image6, ImageSelector.upperimage, index5, count);
                    break;
                case 6:
                    index6=index;
                    index6 = changeIndexForward(ImageSelector.lowerscreen);
                    setImageName(index6, ImageSelector.lowerscreenImageName);
                    resId7 = ImageSelector.lowerscreen[index6];
                    setImage(image7, ImageSelector.lowerscreen, index6, count);
                    break;
                case 7:
                    index7=index;
                    index7 = changeIndexForward(ImageSelector.eyes);
                    setImageName(index7, ImageSelector.eyesImageName);
                    resId8 = ImageSelector.eyes[index7];
                    setImage(image8, ImageSelector.eyes, index7, count);
                    break;
                case 8:
                    index8=index;
                    index8 = changeIndexForward(ImageSelector.top_rightimage);
                    setImageName(index8, ImageSelector.topImageName);
                    resId9 = ImageSelector.top_rightimage[index8];
                    setImage(image9, ImageSelector.top_rightimage, index8, count);
                    break;

                }

                Log.v("swipeleft", "left");
                detector.isLeftToRight = false;
            }
        }

        return true;
    }

    public void setImage(ImageView imgaeview, int a[], int index1, int flag) {

        if (flag == 1) {
            if ((index1 > a.length) || (index1 == a.length)) {

                count = flag;
            } else {
                TranslateAnimation translateAnimation1 = new TranslateAnimation(500,
                        0, 0, 0);
                translateAnimation1.setDuration(500);
                imgaeview.setAnimation(translateAnimation1);
                imgaeview.setImageResource(a[index1]);
                index = index1 + 1;

            }
            Log.v("index value after", "" + index);
        } else if (flag == 0) {
            if (index1 < 0) {

                count = flag;
            } else {
                if (index1 == a.length) {
                    index1--;
                }
                TranslateAnimation translateAnimation = new TranslateAnimation(-500,
                        0, 0, 0);
                translateAnimation.setDuration(500);
                imgaeview.setAnimation(translateAnimation);
                imgaeview.setImageResource(a[index1]);
                index = index1 - 1;

            }
        }
    }

    @SuppressWarnings("unused")
    private void setAnimation(ImageView nextImage, ImageView previousImage) {
        TranslateAnimation translateAnimation = new TranslateAnimation(-1000,
                0, 0, 0);
        translateAnimation.setDuration(2000);

        TranslateAnimation translateAnimation1 = new TranslateAnimation(1000,
                0, 0, 0);
        translateAnimation.setDuration(2000);

        nextImage.setAnimation(translateAnimation);
        previousImage.setAnimation(translateAnimation1);

    }

    public void  setRandomImage() {
        final int min = 0,mn=0;
        final int max = 10,mx=2;
         final Random myRandom = new Random();
         int num = myRandom.nextInt(max-min+1)+min;

         int i=myRandom.nextInt(mx-mn+1)+mn;
         imagename.setText(ImageSelector.bottomImageName[num]);
         resId1=ImageSelector.bottom_image[num];
         resId2=ImageSelector.horns[num];
         resId3=ImageSelector.feet[i];
         resId8=ImageSelector.eyes[i];
         resId4=ImageSelector.forehead[i];
         resId6=ImageSelector.upperimage[num];
         if(!direction){
         TranslateAnimation translateAnimation1 = new TranslateAnimation(50,
                    0, 0, 0);
            translateAnimation1.setDuration(50);
        image1.setAnimation(translateAnimation1);
        image1.setImageResource(resId1);
        image2.setAnimation(translateAnimation1);
        image2.setImageResource(resId2);
        image3.setImageResource(resId3);
        image4.setImageResource(resId4);
        image8.setImageResource(resId8);
        image4.setAnimation(translateAnimation1);
        image8.setAnimation(translateAnimation1);
        image3.setAnimation(translateAnimation1);

        image6.setImageResource(resId6);
        direction=true;
         }else{
             TranslateAnimation translateAnimation1 = new TranslateAnimation(-50,
                        0, 0, 0);
                translateAnimation1.setDuration(50);
            image1.setAnimation(translateAnimation1);
            image1.setImageResource(resId1);
            image2.setAnimation(translateAnimation1);
            image2.setImageResource(resId2);
            image3.setImageResource(resId3);
            image4.setImageResource(resId4);
            image8.setImageResource(resId8);
            image4.setAnimation(translateAnimation1);
            image8.setAnimation(translateAnimation1);
            image3.setAnimation(translateAnimation1);
            image6.setImageResource(resId6);
            direction=false;
         }

    }
    public int changeIndexForward(int a[]) {

        if (index < 0) {
            index++;
        }
        if (index == a.length) {
            index = index - 1;

        }
        return index;
    }
public void  setImageName(int indexp,String a[]) {
    imagename.setText(a[indexp]);
}

@Override
public void onResume() {
    // TODO Auto-generated method stub
    super.onResume();

     // setting default images
        image1.setImageResource(ImageSelector.bottom_image[index0]);
        image2.setImageResource(ImageSelector.horns[index1]);
        image3.setImageResource(ImageSelector.feet[index2]);
        image4.setImageResource(ImageSelector.forehead[index3]);

    mSensorManager.registerListener(mShakeDetector, mAccelerometer,    SensorManager.SENSOR_DELAY_UI);
}
@Override
public void onPause() {
    // Add the following line to unregister the Sensor Manager onPause
    mSensorManager.unregisterListener(mShakeDetector);
    super.onPause();
}


@Override
public void onShake(int count) {
    // TODO Auto-generated method stub
    Log.v("in sensor", "getting shake sensor");
    setRandomImage();
}



}

0 个答案:

没有答案