본문 바로가기

Animation

[Android] View translate animation 뷰를 이동 시키는 애니메이션을 구사할 때, 아래와 같은 형태를 먼저 생각하게 됩니다. 1. translate xml을 이용하여 애니메이션을 지정한다.2. xml로 Animation 클래스를 생성 한다.3. 애니메이션을 넣고자 하는 View에 설정 한다.4. Animation을 start 시킨다. 위와 같은 형태는 복잡할 뿐만 아니라 버그나 예외 상황이 너무 많이 발생 합니다.역시나 구글 형님들이 좋은 API를 만들어 두었네요. mView.animate().translationY(500).withLayer();위와 같이 하면 mView 라는 View를 500px 아래로 내리는 애니메이션을 실행 해라. withLayer 함수를 함께 사용하면 mView가 그 자리에 고정이 됩니다. 만약 아래 두 함수를 번갈아.. 더보기
[Android] Background animation에 쓸만한 TransitionDrawable 혹시 RadioButton 이나 Switch 관련된 View를 사용하고자 할 경우, 한번 고려해보면 나쁘지 않을 것이다.그냥 xml로 정의 해서 background에 넣는 방법이 있고, 직접 코드에 넣을 수도 있다. 1. xml로 정의 res/drawable 폴더안에 btn_transition_drawable.xml 라는 xml 파일을 만들어 놓고, 아래 소스대로 코딩 합니다. 그 다음, 사용하고자 하는 View background에 위 xml로 설정 합니다.이로써 설정은 끝났습니다.이제 TransitionDrawable에 Animation을 동작하게 하는 코드만 넣어주면 됩니다.코드는 아래와 같습니다.// set background animation Drawable drawable = findViewB.. 더보기
[Android] Material Design Ripple Animation Material Design을 진행 하는동안에 Android 에서 기본적으로 Click Animation을 지원해주는 View가 있는 반면에,그렇게 되지 않는 View 일 경우 해당 Animation을 만들어야만 합니다.이때 사용할만한 좋은 Library가 있어서 공유하고자 합니다. https://github.com/traex/RippleEffect 아래와 같이 표현하고자 하는 View나 Layout을 감싸주기만 하면 됩니다.IntegrationThe lib is available on Maven Central, you can find it with Gradle, pleasedependencies { compile 'com.github.traex.rippleeffect:library:1.3' } Usag.. 더보기
[Android] AnimatorSet 이용 여러 Animation을 한번에 돌리기 위해선, 개별적으로 같은 시간에 start를 해봤자 동시에 진행이되지 않습니다.!!! 이럴 경우, AnimatorSet을 이용하여 start를 시키는게 바람직 합니다. 이건 참고용으로 두 View를 Scale로 교환 되는 함수 입니다. public static void exchangeScaleAnimation(final View scaleOnView, final View scaleOffView, int duration) { ObjectAnimator scaleOnX = ObjectAnimator.ofFloat(scaleOnView, "scaleX", 1f); ObjectAnimator scaleOnY = ObjectAnimator.ofFloat(scaleOnView.. 더보기
[Android] ObjectAnimator의 편의성 ListView 나 RecyclerView 에 애니메이션을 넣고 싶으시죠???간단한 방법 이 있습니다. 바로!!ObjectAnimator를 이용하는 건데요. 간단하게 리스트를 반짝 하고 바로 나오는게 아니라 알파값으로 Fade 효과를 적용하는 소스 입니다. ObjectAnimator.ofFloat(contentView, "alpha", 0.0f, 1f).start();딱! 한줄 넣으시면 됩니다.contentView는 Adapter에서 getView나 instatntiateItem 함수에서 전체 View로 할당해놓으시면 편합니다.원하시면 분할 시켜서 놓으셔도 되구요. 엄청 간편하게 애니메이션을 적용할 수 있으시 한번 해보세요~ 더보기
[Android] Toolbar 강제 Hambuger Animation Toolbar 좌측 상단에 보면 햄버거 모양의 아이콘이 있다.DrawerLayout의 이벤트가 발생할 경우, 이 햄버거 모양의 아이콘이 화살표로 바뀌게 되는데이 애니메이션을 강제로 줄 수 있는 소스를 공유하고자 한다. ValueAnimator anim = ValueAnimator.ofFloat(0.0f, 1.0f); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { float slideOffset = (Float) valueAnimator.getAnimatedValue(); mDrawerToggle.onDra.. 더보기
[Android] setCustomAnimations 이 동작하지 않을때 Fragment 이동할 시, setCustomAnimations 함수를 이용하여 커스텀하게 Animation을 주게 됩니다.이때 설정은 분명 잘 한것 같은데 동작을 잘 하지 않지요. 혹시 아래와 같이 설정하시지 않았나요?FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out); transaction.replace(R.id.main_container_, new NoticeFragment()); transaction.addToBackStack(null); transaction.commit(); 그럼 한번 .. 더보기
[Android] 특정 Layout 위치에 Fragment를 변환 대부분 아는 내용이라 생각되지만, Fragment를 활용하는 개념을 이해하는데 좋을 듯 하여 이렇게 글을 남깁니다. 테스트는 위 그림과 같이 버튼을 누른 이벤트 따라 Layout 영역이 변경되는 것을 확인 하는 아주 간단한 예제 입니다. ## MainActivity public class MainActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn_fr.. 더보기