我正在浏览一些非常棒的Android库,我找到了Android BrokenView。它使用起来非常简单,并使用触摸事件来显示破碎的动画。以下是我们需要添加的代码,以使View
能够充当BrokenView
:
brokenView = BrokenView.add2Window(context);
listener = new BrokenTouchListener.Builder(brokenView).build();
view.setOnTouchListener(listener);
我遇到的问题是我想以编程方式执行破碎的动画,即没有任何实际的触摸事件。我尝试查看源代码,但无法弄清楚如何实现这一点,因为大多数方法都是protected
。
关于我该怎么做的任何想法?
答案 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