当前位置: 首页 > 知识库问答 >
问题:

Android-拖放-动画阴影到目标

葛志国
2023-03-14

我想将阴影视图设置为某些坐标(目标视图)的动画。

我在用D

我不想从源位置动画视图,但想从DROP位置做。

我尝试了很多方法,但都无效。我如何才能访问ShadowView?这也不起作用:

EventDragShadowBuilder.getView()

我认为TranslateAnimation应该可以做到这一点,但我需要在D期间访问“阴影”视图

共有3个答案

井礼骞
2023-03-14

作为一种解决方法,您可以尝试添加一个具有透明和黑色渐变绘制选项的选择器,具体取决于适当的状态。在这种情况下,您将决定何时显示“阴影”,何时消失。

这里有一个关于“阴影”边界布局的问题:Android LinearLayout:在LinearLayout周围添加阴影边界

不确定,这是不是一个好方法...但它可能会奏效。祝你好运!

吴山
2023-03-14

有一种可能是

拖动事件完成后,您可以将“视图”移动到拖放的位置,然后您可以启动动画将视图从拖放的位置移动到目标。

请记住,此处未设置拖动阴影的动画,但视图本身正在设置动画。

唐阳飇
2023-03-14

首先在视图上实现onTouchlistener

llDragable.setOnTouchListener(this);

使视图可拖动

@Override
public boolean onTouch(View view, MotionEvent event) {
    float dX = 0;
    float dY = 0;
    switch (view.getId()){
        case R.id.dragableLayout :{
            switch (event.getActionMasked()) {
                case MotionEvent.ACTION_DOWN:
                    dX = view.getX() - event.getRawX();
                    dY = view.getY() - event.getRawY();
                    lastAction = MotionEvent.ACTION_DOWN;
                    break;

                case MotionEvent.ACTION_MOVE:
                    view.setY(event.getRawY() + dY);
                    view.setX(event.getRawX() + dX);
                    lastAction = MotionEvent.ACTION_MOVE;
                    break;

                case MotionEvent.ACTION_UP:
                    //Animate
                    animate();
                    if (lastAction == MotionEvent.ACTION_DOWN)
                        //Toast.makeText(DraggableView.this, "Clicked!", Toast.LENGTH_SHORT).show();
                        break;

                default:
                    return false;
            }
            return true;
        }
    }
    return false;
}

然后,可以在case MotionEvent中使用对象动画师。ACTION\u UP使用对象动画。你需要知道目的地的位置。

private void animate() {
    Path path = new Path();
    path.moveTo(destinationX, destinationY);
    path.lineTo(destinationX, destinationY);
    ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(mButton, View.X, View.Y, path);
    objectAnimator.setDuration(duration);
    objectAnimator.setInterpolator(new LinearInterpolator());
    objectAnimator.start();
}
 类似资料:
  • 所有人都喜欢好看的阴影效果,它们可能是Adobe Photoshop中使用最广泛的效果了,并且也经常在Web和图形设计中使用。如果操作正确,它们实际上确实能够增加图像真实感。然而,如果操作不当,它们也可能完全毁掉一个图像。 在画布中创建阴影效果是相对较简单的,它可以通过4个全局属性进行控制。这些属性是shadowBlur、shadowOffsetX、shadowOffsetY和shadowColo

  • 阴影 Unity 的灯光可以将 阴影 从一个游戏对象投射到自身的其他部分或是附近的其他游戏对象上。阴影以『扁平』的方式体现游戏对象的尺寸和位置,因此可以为场景添加一定程度的深度和真实感。 场景视图中的游戏对象正在投射阴影 阴影如何工作? 考虑一种最简单的情况,在场景中只有单个光源。光线从光源出发并沿着直线传播,最终可能会碰撞到场景中的游戏对象。一旦光线碰撞到某个游戏对象,光线将无法继续传播和照亮前

  • 本文向大家介绍Android自定义View绘图实现拖影动画,包括了Android自定义View绘图实现拖影动画的使用技巧和注意事项,需要的朋友参考一下 前几天在“Android绘图之渐隐动画”一文中通过画线实现了渐隐动画,但里面有个问题,画笔较粗(大于1)时线段之间会有裂隙,我又改进了一下。这次效果好多了。 先看效果吧: 然后我们来说说基本的做法:  •根据画笔宽度,计算每一条线段两个顶点对应的四

  • 我需要帮助进行角度拖放。就像我需要把一个图标拖到画布上。 我已经通过了许多例子,这是我所做的例子。当我拖动那个对象时,对象的副本应该被移动。我看了很多例子,请大家帮忙。

  • 一个具有立体阴影的通用放大镜视图,可对手指触摸位置处局部放大,效果与iOS自身的文本编辑框放大镜相同。支持自动避让,以动画效果跳转。   功能特性: 圆形放大镜,右下角带阴影(区别于另一项目,官方版本也没阴影),放大显示触摸位置的视图内容。 两种自动走位:实时跟随触摸位置、固定在左上角(触摸离得近时自动避让,以动画效果避让)。 可指定放大倍数,默认是1.5倍。 快速触摸时不显示放大镜,持续触摸超过

  • 在材料设计指南中,谷歌展示了一种新的按钮样式,即FAB按钮。我找到了如何使它的说明,但我有麻烦添加阴影。如何才能做到这一点呢?