android学习之TransitionDrawable 实现变化效果
Drawable的例子,体现出Drawable的强大功能。Android SDK中说明了Drawable主要的作用是:在XML中定义各种动画,然后把 XML当作Drawable资源来读取,通过Drawable显示动画。
下面举个使用TransitionDrawable 的例子,创建一个Android工程,然后再这个工程的基础上修改,修改过程如下:
1、去掉layout/main.xml中的TextView,增加ImagView,如下:




hand_icon.xml
hand.xml
代码部份:
mDrawer = (SlidingDrawer) findViewById(R.id.slidingdrawer); final SlidingDrawer drawer = mDrawer; mLinearLayout = (LinearLayout) drawer.getContent(); final LinearLayout grid = mLinearLayout; mImageView = (ImageView) drawer.findViewById(R.id.handle); mHandleIcon = (TransitionDrawable) mImageView.getDrawable(); mHandleIcon.setCrossFadeEnabled(true); final DrawerManager drawerManager = new DrawerManager(); drawer.setOnDrawerOpenListener(drawerManager); drawer.setOnDrawerCloseListener(drawerManager); drawer.setOnDrawerScrollListener(drawerManager); private class DrawerManager implements SlidingDrawer.OnDrawerOpenListener, SlidingDrawer.OnDrawerCloseListener, SlidingDrawer.OnDrawerScrollListener { private boolean mOpen; public void onDrawerOpened() { Log.v(tag, "onDrawerOpened"); if (!mOpen) { mHandleIcon.reverseTransition(150); mOpen = true; } } private void offsetBoundsToDragLayer(Rect bounds, View view) { view.getDrawingRect(bounds); Log.v(tag, "offsetBoundsToDragLayer"); } public void onDrawerClosed() { Log.v(tag, "onDrawerClosed"); if (mOpen) { mHandleIcon.reverseTransition(150); mOpen = false; } } public void onScrollStarted() { if (PROFILE_DRAWER) { android.os.Debug.startMethodTracing("/sdcard/launcher-drawer"); } } public void onScrollEnded() { if (PROFILE_DRAWER) { android.os.Debug.stopMethodTracing(); } } }