2016-09-07 2 views
0

멋진 Android 라이브러리를 경험했으며 Android가 BrokenView 인 것을 발견했습니다. 사용하기가 아주 간단하고 깨진 애니메이션을 보여주기 위해 터치 이벤트를 사용합니다. 여기에 우리가 행동하는 View 수 있도록하기 위해 추가하는 데 필요한하고있는 코드는 BrokenView :프로그래밍 방식으로 Android에 애니메이션 적용 BrokenView

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

내가 실제없이, 프로그래밍, 즉 깨진 애니메이션을 수행 할 것입니다했습니다 문제 터치 이벤트. 나는 소스 코드를 살펴 보았지만 대부분의 방법이 protected이므로이를 달성하는 방법을 알 수 없었다.

어떻게 할 수 있습니까?

+0

[onTouch() (https://github.com/zhanyongsheng/BrokenView/blob/master/brokenview/src/main/java/com/zys/brokenview/BrokenTouchListener.java). 직접 복사하고 편집하십시오. –

+0

그래, 나는 그것을 보았지만, 애니메이션 ('brokenAnim.start();')을 프로그래밍 방식으로 시작하고 touch 이벤트로 시작하지 않기를 원합니다. –

답변

0

나는 모션 이벤트를 사용하여 이것을 달성했다. 그것은 작동하지만 사용자가 터치 이벤트를 통해 스매쉬를 트리거하지 못하도록하기 위해 createAnimator()를 직접 호출하는 것을 선호합니다.

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() 메서드가 없습니다 :

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); 

는 내가 뭘하고 싶은 것은 이것이다.

HTH가되어

관련 문제