android - 滑动取消Android中的动画

标签 android android-layout animation ontouchlistener touch-event

我想要一个幻灯片来取消动画,就像我的应用程序中的 whatsapp 一样。

首先,当我按住录制按钮时,它会开始录制。这部分工作正常。

其次,当我在已经点击的情况下将手指向后移动到垃圾桶时,“Text View Slide to cancel”应该向后滑动并且录制应该暂停。在某个点之后我将执行垃圾桶打开动画。但是,如果我向后滑动时向前滑动,则 TextView 应设置在其原始位置并且录音应再次播放。

我的问题:我没有得到任何如何准确滑动 TextView 的帮助。

我也从这里得到了帮助https://github.com/sarathnk/Audio但我无法达到预期的结果。

这是我的 Java 代码:

holdtoRecord = (ImageView)  findViewById(R.id.hold);
slider = (TextView) findViewById(R.id.slide);

holdtoRecord.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    // start recording.
                    mVideoView.pause();
                    onHold();

                    return true;

                }

                if (event.getAction() == MotionEvent.ACTION_UP) {
                    // Stop recording and save file


                    mVideoView.start();
                    offHold();

                    return true;
                }


                if (event.getAction() == MotionEvent.ACTION_MOVE) {


                }

enter image description here

最佳答案

尝试使用此代码,它会起作用。

    int xPos_terminal = 100;
    int xPos_DragInitial = 0;


hold.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {


                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                    // start recording.

                    xPos_DragInitial = (int) motionEvent.getX();
                    xPos_SliderOriginal = (int) slider.getX();

                    int xPos_Trash = (int) trash_cap.getX();

                    Log.e("original", String.valueOf(xPos_Trash));
                    return true;

                }

                if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                    return true;

                }



                if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {


                     int xPos_current = (int) motionEvent.getX();


                    //Handling of SlideToCancel View
                    String slideToViewMsg = "";
                    if(xPos_current < xPos_DragInitial)
                    {
                        //LEFT DIRECTION
                        Log.e("----- LEFT DIRECTION --","S");
                        if(xPos_SliderOriginal > (xPos_terminal))
                        {
                            slideToViewMsg = "Animate SlideToCancel view to Reduce its X";
                             lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                            int newXOfSlider = (int) slider.getX();
                            newXOfSlider -= 2;
                            lp.setMargins(newXOfSlider, (int) slider.getY(), 0, 0);
                            slider.setLayoutParams(lp);
                        }
                        else
                        {
                            slideToViewMsg = "Donot Animate SlideToCancel view";
                        }
                    }
                    else
                    {
                        //RIGHT DIRECTION
                        Log.e("---- RIGHT DIRECTION --","r");
                        if((int)slider.getX() < xPos_SliderOriginal)
                        {
                            slideToViewMsg = "Animate SlideToCancel view to increase X";
                            int newXOfSlider = (int) slider.getX();
                            newXOfSlider += 2;
                            lp.setMargins(newXOfSlider, (int) slider.getY(), 0, 0);
                            slider.setLayoutParams(lp);
                        }
                        else
                        {
                            slideToViewMsg = "Donot Animate SlideToCancel View";
                        }
                    }

                    Log.e("x",slideToViewMsg);
                    //Handling of Delet button  
                    if (xPos_current < (xPos_terminal))
                    {
                        //Animate Delete button to open


                    }
                    else
                    {
                        //Animate Delet Button To Close

                    }

                    //chnage xPosInitial to xPosCurrent to get actual direction
                    xPos_DragInitial = xPos_current;
                    return true;

                }

                return false;
            }
        });
    }

关于android - 滑动取消Android中的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39303903/

相关文章:

android - wrap_content 不适用于 Android 4.0 中的 TextView

阿拉伯语的 Android 页面 curl 效果

ios - 如何在 Swift 中动态减小宽度的同时对 UITextField 进行动画处理?

android - 如果 android 应用程序不存在,则从 onReceive 方法启动它

java - Google Speech-to-Text API - Android 应用程序崩溃

java - TextView 不显示字符串变量

jquery - 使用 jQuery .mouseover 时如何在它开始之前停止 css 动画(它首先动画一瞬间并卡在动画状态)

ios - 如何将居中正方形动画化到顶部

安卓 Facebook 分享不工作

java - 安卓工作室错误 : E/AndroidRuntime