Android TextureView, SurfaceView에서 쉽게 트윈 애니메이션 ~ FPSAnimator ~
Tween 애니메이션 만들기
FPSAnimator의 기본적인 사용법은 여기 에 기술했습니다.
이번 기사에서는 TweenAnimation에 대해 자세히 씁니다.
Bitmap을 애니메이션으로 만들기
인스턴스를 만들 때 Bitmap을 생성자로 설정합니다.
with 다음에 Tween 애니메이션을 한다면 tween(), 포물선 운동의 애니메이션을 한다면 parabolic()를 기술.
이번은 Tween 애니메이션이므로 tween().
BitmapDrawer bitmapDrawer = new BitmapDrawer(bitmap)
.dpSize(this)
.scaleRegistration(bitmap.getWidth() / 2, bitmap.getHeight() / 2);
float x = 300;
float y = 400;
DisplayObject bitmapDisplay = new DisplayObject();
bitmapDisplay.with(bitmapDrawer)
.tween()
.tweenLoop(true)
.transform(x, y)
.to(500, x, y, 0, 6f, 6f, 0, Ease.SINE_IN_OUT)
.waitTime(300)
.transform(x, y, Util.convertAlphaFloatToInt(1f), 1f, 1f, 0)
.waitTime(300)
.end();
텍스트 애니메이션
인스턴스 작성시, String 의 캐릭터 라인과, textSize나 textColor가 설정된 Paint를 constructor 으로 설정.
Paint에 typeface를 설정하면 글꼴을 바꿀 수 있으며 글꼴 아이콘을 그릴 수 있습니다.
with 다음에 Tween 애니메이션을 한다면 tween(), 포물선 운동의 애니메이션을 한다면 parabolic()를 기술.
이번은 Tween 애니메이션이므로 tween().
Paint paint = new Paint();
paint.setColor(ContextCompat.getColor(this, R.color.colorAccent));
paint.setTextSize(Util.convertDpToPixel(16, this));
String tweenTxt = "TweenText";
float textWidth = paint.measureText(tweenTxt);
TextDrawer textDrawer = new TextDrawer(tweenTxt, paint)
.rotateRegistration(textWidth / 2, textWidth / 2);
DisplayObject textDisplay = new DisplayObject();
textDisplay.with(textDrawer)
.tween()
.tweenLoop(true)
.transform(0, 800)
.waitTime(300)
.to(1000, windowWidth - textWidth, 800, 720f, Ease.SINE_OUT)
.waitTime(300)
.to(1000, 0, 800, 0f, Ease.SINE_IN)
.end();
Tween 속성
함수 이름
기능
tweenLoop(boolean)
true이면 트윈 애니메이션이 반복됩니다.
transform(float x, float y) transform(float x, float y, int alpha, float scaleX, float scaleY, float rotation)
애니메이션은 없으며 즉시 인수 값으로 변경됩니다.
toX(long animDuration, float x) toX(long animDuration, float x, Ease ease)
x 값의 애니메이션을 만듭니다. 값의 단위는 pixel
toY(long animDuration, float y) toY(long animDuration, float y, Ease ease)
y 값의 애니메이션을 만듭니다. 값의 단위는 pixel
alpha(long animDuration, float alpha)alpha(long animDuration, float alpha, Ease ease)
투명도의 애니메이션을 시킨다. 그러나 Max 값은 int255입니다. 1.0~0의 범위내에서 지정하고 싶은 경우, Util.convertAlphaIntToFloat(float)라고 하는 함수가 준비되어 있습니다.
scale(long animDuration, float scaleX, float scaleY)scale(long animDuration, float scaleX, float scaleY, Ease ease)
scale의 애니메이션을 시킨다. 확대의 중심 좌표를 조작하고 싶은 경우, 각 Drawer에 scaleRegistration 함수가 탑재되어 있으므로, 거기서 좌표를 설정한다.
rotation(long animDuration, float rotation)rotation(long animDuration, float rotation, Ease ease)
회전 애니메이션을 만듭니다. 회전의 중심 좌표를 조작하고 싶은 경우, 각 Drawer에 rotateRegistration 함수가 탑재되어 있으므로, 거기서 좌표를 설정한다.
waitTime(long animDuration)
애니메이션하지 않고 그 때의 속성으로 그립니다.
call (AnimCallBack callBack)
트윈이 시작되거나 종료될 때와 같이 특정 시점에서 콜백 함수를 실행하려는 경우에 사용
to(long animDuration, float x, float y) to(long animDuration, float x, float y, Ease ease) to(long animDuration, float x, float y, int alpha) to(long animDuration, float x, float y, int alpha, Ease ease) to(long animDuration, float x, float y, float scaleX, float scaleY) to(long animDuration, float x, float y, float scaleX, float scaleY, Ease ease) to(long animDuration , float y, float rotation) to(long animDuration, float x, float y, float rotation, Ease ease) to(long animDuration, float x, float y, int alpha, float scaleX, float scaleY, float rotation, Easeease
현재의 상태로부터 인수의 타겟의 상태까지, animDuration의 시간으로 트윈 애니메이션 한다.
설명 예
DisplayObject bitmapDisplay = new DisplayObject();
bitmapDisplay
.with(new BitmapDrawer(bitmap))
.tween()
.tweenLoop(true)
.transform(bitmapX, bitmapY)
.toX(1600, UIUtil.getWindowWidth(this) - bitmap.getWidth(), Ease.BACK_IN_OUT)
.waitTime(1000)
.alpha(1000, 0f)
.alpha(1000, 1f)
.scale(500, -1f, 1f, Ease.CUBIC_IN)
.scale(500, 1f, 1f, Ease.CUBIC_OUT)
.call(new AnimCallBack() {
@Override
public void call() {
Snackbar.make(mFPSTextureView, "Animation finished!", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
})
.end();
Easing
easing은 28 종류도 있네요.
꼭 library에 github의 Star를 부탁드립니다.
FPSAnimator
Reference
이 문제에 관하여(Android TextureView, SurfaceView에서 쉽게 트윈 애니메이션 ~ FPSAnimator ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/MasayukiSuda/items/b15e5e5307f406994959
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
DisplayObject bitmapDisplay = new DisplayObject();
bitmapDisplay
.with(new BitmapDrawer(bitmap))
.tween()
.tweenLoop(true)
.transform(bitmapX, bitmapY)
.toX(1600, UIUtil.getWindowWidth(this) - bitmap.getWidth(), Ease.BACK_IN_OUT)
.waitTime(1000)
.alpha(1000, 0f)
.alpha(1000, 1f)
.scale(500, -1f, 1f, Ease.CUBIC_IN)
.scale(500, 1f, 1f, Ease.CUBIC_OUT)
.call(new AnimCallBack() {
@Override
public void call() {
Snackbar.make(mFPSTextureView, "Animation finished!", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
})
.end();
easing은 28 종류도 있네요.
꼭 library에 github의 Star를 부탁드립니다.
FPSAnimator
Reference
이 문제에 관하여(Android TextureView, SurfaceView에서 쉽게 트윈 애니메이션 ~ FPSAnimator ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MasayukiSuda/items/b15e5e5307f406994959텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)