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

最后的图片

屏幕上动画显示的是:从图片image_expand.png过渡到image_collapse.png,也就是我们在expand_collapse.xml中定义的一个transition动画。看完这个例子,你对Drawable的理解是否又深入些?这里提供这个程序的源代码,供大家下载,可以在这个例子的基础上去体会其他的Drawable,来加深对Drawable的理解。
总结说明
通过以上2个例子程序,相信对Drawable会有一定的认识了,在以后的篇幅中会介绍更多的例子,更加深入的学习和理解Drawable。具体还有哪些Drawable,大家到Android SDK去深入学习吧。
转贴至:http://www.moandroid.com/?p=784
实例:


实现上图效果:
xml部份文件:
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(); } } }