Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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
在android中滑动按钮?_Android_Animation - Fatal编程技术网

在android中滑动按钮?

在android中滑动按钮?,android,animation,Android,Animation,我在我的应用程序中有一个自定义按钮,它的宽度为50dp,左边距设置为-25dp,所以有一半在屏幕外。我想给它设置动画,这样在某个特定事件中,它向右移动50 dp并保持在那里 我试过这个: TranslateAnimation slide_anim=new TranslateAnimation(0,50,0,0); slide_anim.setDuration(250); mMovingButton.startAnimation(slide_anim); 但是它移动了50个像素,却没有停留在那里

我在我的应用程序中有一个自定义按钮,它的宽度为50dp,左边距设置为-25dp,所以有一半在屏幕外。我想给它设置动画,这样在某个特定事件中,它向右移动50 dp并保持在那里

我试过这个:

TranslateAnimation slide_anim=new TranslateAnimation(0,50,0,0);
slide_anim.setDuration(250);
mMovingButton.startAnimation(slide_anim);

但是它移动了50个像素,却没有停留在那里,我该如何修复它呢?

使用下面的代码-

btnToSlide.animate().translationX(dpToPx(50,mContext)).setDuration(200)
        .setStartDelay(0).alpha(200);
要在dp中传递值,请使用dpToPx方法-

    public static int dpToPx(int dp, Context context) {


DisplayMetrics displayMetrics = context.getResources()
                .getDisplayMetrics();
        int px = Math.round(dp
                * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
        return px;
    }

幻灯片\u anim.setFillAfter(真);将此标记添加到代码中。这看起来确实会将其移动到那里,但hitbox会保持在相同的位置。这是因为您使用的是旧的动画系统,所以应该使用属性动画。