以编程方式为Android BrokenView

时间:2016-09-07 00:53:18

标签: android

我正在浏览一些非常棒的Android库,我找到了Android BrokenView。它使用起来非常简单,并使用触摸事件来显示破碎的动画。以下是我们需要添加的代码,以使View能够充当BrokenView

brokenView = BrokenView.add2Window(context);
listener = new BrokenTouchListener.Builder(brokenView).build();
view.setOnTouchListener(listener);

我遇到的问题是我想以编程方式执行破碎的动画,即没有任何实际的触摸事件。我尝试查看源代码,但无法弄清楚如何实现这一点,因为大多数方法都是protected

关于我该怎么做的任何想法?

1 个答案:

答案 0 :(得分:0)

我使用动作事件实现了这一目标。它有效,但我更喜欢直接调用createAnimator(),因为我不希望用户能够通过触摸事件触发粉碎。

long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis()+1000;

int[] coords = new int[2];
targetView.getLocationOnScreen(coords);

float x = coords[0] + targetView.getWidth()/2;
float y = coords[1] + targetView.getHeight()/2;

MotionEvent motionEvent = MotionEvent.obtain(
              downTime,
              eventTime,
              MotionEvent.ACTION_DOWN,
              x,
              y,
              0
      );

mBrokenTouchListener = new BrokenTouchListener.Builder(mBrokenView)
        .setEnableArea(mRootView)
        .build();

mBrokenTouchListener.onTouch(targetView, motionEvent);

我想做的是:

Point point = new Point((int)x, (int)y);
BrokenConfig config = new BrokenConfig();
brokenView.createAnimator(mFLTargetView, point, config);
brokenView.setEnable(true);
// or 
brokenView.start();

但BrokenConfig是包私有的,并且没有start()方法。

HTH