Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除视图可见性消失时的调整动画_Java_Android - Fatal编程技术网

Java 删除视图可见性消失时的调整动画

Java 删除视图可见性消失时的调整动画,java,android,Java,Android,我正在尝试使用ViewPager在Android上模拟类似iPhone X的导航。当用户释放底部的栏时,viewpager的可见性设置为View.GONE,并显示丑陋的下拉列表,如视频中所示 我试图通过直接更改viewpager的尺寸,然后将其可见性更改为GONE来删除动画,但没有任何帮助。提前感谢:) 我无法摆脱动画,相反,我创建了另一个布局,并使用wm.addView(vpLayout,lp)将其添加到窗口管理器中

我正在尝试使用ViewPager在Android上模拟类似iPhone X的导航。当用户释放底部的栏时,viewpager的可见性设置为
View.GONE
,并显示丑陋的下拉列表,如视频中所示

我试图通过直接更改viewpager的尺寸,然后将其可见性更改为GONE来删除动画,但没有任何帮助。提前感谢:)


我无法摆脱动画,相反,我创建了另一个布局,并使用
wm.addView(vpLayout,lp)将其添加到窗口管理器中wm.removeView(vpLayout)将其删除


如果您想知道什么是
vpLayout
,我已经将ViewPager分离到另一个布局文件中,并将其膨胀到一个名为
vpLayout
FrameLayout
。花了一段时间,这是值得的,但它产生了一个新的问题。希望我也能解决它。谢谢:)

发布一些代码,很难提出解决方案otherwise@elmorabea使用withEndAction并在操作中更改项目的可见性,使用codeTry进行更新。允许动画运行,然后使用withEndAction或StartAction设置end visibility值我认为您所说的与我在函数中所做的类似
applyTransformation
当插值时间(即系数)达到其最大值1时,可见性设置为消失
FrameLayout ll = mLayout.findViewById(R.id.mainLL);
ll.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, final MotionEvent event) {
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    bar.animate().alpha(0.0f);
                    viewPager.setVisibility(View.VISIBLE);

                    layoutParams.height = old_y;
                    viewPager.setLayoutParams(layoutParams);

                    break;
                case MotionEvent.ACTION_UP:
                    Animation a = new Animation() {
                        @Override
                        protected void applyTransformation(float factor, Transformation t) {

                            float factorX = (float)scaleX + factor;

                            int currentPos = viewPager.getCurrentItem();

                            if (currentPos != 0) {
                                adapter.getItem(currentPos - 1).setScaleX(Math.min(factorX, 1));
                                adapter.getItem(currentPos - 1).setScaleY(Math.min(factorX, 1));
                            }

                            adapter.getItem(currentPos).setScaleX(Math.min(factorX, 1));
                            adapter.getItem(currentPos).setScaleY(Math.min(factorX, 1));

                            adapter.getItem(currentPos + 1).setScaleX(Math.min(factorX, 1));
                            adapter.getItem(currentPos + 1).setScaleY(Math.min(factorX, 1));

                            if(adapter.getItem(currentPos).getScaleX() > 0.1) {
                                if(factor == 1){
                                    viewPager.setVisibility(View.GONE);
                                }
                            }


                        }


                    };

                    bar.animate().alpha(1.0f);
                    viewPager.setVisibility(View.GONE);
                    a.setDuration(zoomInDuration);
                    viewPager.startAnimation(a);
                    break;