如何在android中使用滑动手势实现类似滚动的视图寻呼机

如何在android中使用滑动手势实现类似滚动的视图寻呼机,android,android-fragments,gesturedetector,Android,Android Fragments,Gesturedetector,我必须通过组合多个图像来制作一个图像,图像被放置在同一位置 我有9个不同的图像数组,可以通过选择特定数组来更改图像 所有这些图像都是透明的图像,一个一个地放在另一个上面,我必须通过滚动选择一个图像并进行更改 我已经使用了这个滑动手势,它工作得很好,但我想在这个页面上像滚动一样查看寻呼机 这是我已经完成的代码 import java.util.Random; import com.example.toros1.ImageSelector; import com.example.toros1

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

我有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();
}



}
import java.util.Random;
导入com.example.toros1.ImageSelector;
导入com.example.toros1.SimpleGestureFilter;
导入android.app.Fragment;
导入android.hardware.Sensor;
导入android.hardware.SensorManager;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.GestureDetector;
导入android.view.LayoutInflater;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.view.OnTouchListener;
导入android.view.ViewGroup;
导入android.view.animation.TranslateAnimation;
导入android.webkit.WebView.FindListener;
导入android.widget.Button;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.example.toros1.R;
导入com.example.toros1.fragment.ShakeDetector.OnShakeListener;
公共类Main_片段扩展了片段实现OnTouchListener、OnShakeListener{
ImageView image1、image2、image3、image4、image5、image6、image7、image8、image9、image10;
布尔方向=假;
专用单纯形滤波器检测器;
私人手势检测器;
私人传感器管理器;
专用传感器mAccelerometer;
专用震动检测器mShakeDetector;
公共静态int索引=0;
公共静态整数计数,index0,index1,index2,index3,index4,index5,index6,index7,index8,index9;
文本视图图像名称;
按钮随机;
公共静态int resId1=R.drawable.albahio,resId2=R.drawable.bien_armado,resId3=R.drawable.axiblanco,resId4=R.drawable.careto,resId5=R.drawable.bocibanco,resId6=R.drawable.alunarado,resId7=R.drawable.cinchado,resId8=R.drawable.lloron,resId9=R.drawable.bragado;
公共静态图像定位;
@抑制警告(“弃用”)
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//TODO自动生成的方法存根
视图=充气机。充气(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=(按钮)view.findViewById(R.id.random);
imagename=(TextView)view.findViewById(R.id.text);
imagename.setText(ImageSelector.bottomImageName[0]);
random.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
setRandomImage();
}
});
检测器=新的SimpleGestureFilter();
gestureDetector=新的gestureDetector(检测器);
MSSensorManager=(SensorManager)getActivity().getSystemService(getActivity().SENSOR_服务);
mAccelerometer=传感器管理器
.getDefaultSensor(传感器类型\加速计);
mShakeDetector=新的震动检测器();
mShakeDetector.setOnShakeListener(此);
view.setOnTouchListener(这个);
返回视图;
}
//TODO自动生成的方法存根
@凌驾
公共布尔onTouch(视图arg0、运动事件arg1){
//TODO自动生成的方法存根
if(手势检测器onTouchEvent(arg1)){
if(探测器isRightToLeft){
计数=1;
开关(图像位置){
案例0:
index0=指数;
index0=向前更改INDEX(图像选择器.底部图像);
setImageName(index0,ImageSelector.bottomImageName);
resId1=ImageSelector.bottom_image[index0];
setImage(image1,ImageSelector.bottom_image,index0,count);
打破
案例1:
index1=指数;
index1=向前更改INDEX(图像选择器.喇叭);
setImageName(index1,ImageSelector.hornsImageName);
resId2=图像选择器。喇叭[index1];
setImage(image2,ImageSelector.horns,index1,count);
打破
案例2:
index2=指数;
index2=向前更改INDEX(图像选择器.英尺);
setImageName(index2,ImageSelector.feetImageName);
resId3=图像选择器。英尺[index2];
setImage(image3,ImageSelector.feet,index2,count);
打破
案例3:
index3=指数;
index3=向前更改INDEX(图像选择器.前额);
setImageName(index3,ImageSelector.foreheadImageName);
resId4=图像选择器。前额[index3];
设置图像(图像4,图像选择器.前额,索引3,计数);
打破
案例4:
index4=指数;
index4=向前更改INDEX(ImageSelector.moutImage);
setImageName(index4,ImageSelector.moutImageName);
resId5=ImageSelector.moutimage[index4];