http://blog.csdn.net/vipzjyno1/article/details/20623401

http://blog.csdn.net/vipzjyno1/article/details/20623401

http://blog.csdn.net/vipzjyno1/article/details/20623401

http://blog.csdn.net/vipzjyno1/article/details/20623401



Android 仿订单出票效果 (附DEMO)

分类:android 1423人阅读 评论(5) 收藏 举报 仿出票 Android动画 订单 android 模仿

之前我下载了BaseAnimation开源库(BaseAnimation是基于开源的APP,致力于收集各种动画效果)

BaseAnimation转载的链接:http://blog.csdn.net/vipzjyno1/article/details/20622621

发现里面有个火车票的出票效果,发现可以优化下:

Android 仿订单出票效果 (附DEMO)_第1张图片

BaseAnimation内的仿出票效果


可是它的出的票的布局高度啥都是写死的,通过这个思路,我便想到要做个类似于数据是通过网络获取,高度不一定的listview的订单出票效果。


一. 思路:

1)叠在布局上层的是订单信息,而在下层的就是订单内菜单的详细条目,详细条目的布局是置于布局最底层,并且在订单信息相对位置下方,这里使用了FrameLayout来处 理详细条目布局。

2)出票的详细条目列表采用了LISTVIEW,它的动画初始位置要通过计算LISTVIEW的总高度进行计算获取,之后通过TranslateAnimation 进行Animation动画。

3)采用线程来模拟网络获取延迟的效果。


二. 碰到解决的问题:

1)碰到一个问题,就是如果数据一多,超过了一屏幕,在动画过程中动画衔接效果就很差,并有可能出现断层效果。

解决:通过重写ListView, 计算高度,并且在ListView 外面嵌套了一层ScrollView,这样便可以解决这样的问题。

2) 如果在订单信息布局下方直接放置一个LISTVIEW的话,这样,动画时候,LISTVIEW就会盖在订单信息上方。

解决:LISTVIEW外层一定要嵌套一层布局,并且设定在订单信息下方,这样便不会产生上述问题。

3)由于订单底部

一开始就是出现的,并且在数据刷新后跟随LISTVIEW一起下滑。

解决:采用Listview的addFooterView(底部view)方法,把它添加到LISTVIEW底部,在开始添加完毕后就直接初始化让Listview.setAdapter(null);

这样便在开始底部就显示出来了。

4)如何去计算LISTVIEW的总高度

解决:本DEMO采用了2种方式,

第一种:鉴于订单中每个ITEM的布局都是固定的,于是在布局中设置ITEM的高度为固定值,之后乘以listAdapter.getCount() 加上分割线listView.getDividerHeight() 的总高度

第二种:如果每个ITEM的布局是高度是不一定的话,就会造成影响,便找了一些资料,使用了以下方法:

[java] view plain copy
  1. /**ListView总高度*/
  2. publicstaticinttotalHeight=0;
  3. publicstaticvoidsetListViewHeightBasedOnChildren(ListViewlistView){
  4. ListAdapterlistAdapter=listView.getAdapter();
  5. if(listAdapter==null){
  6. return;
  7. }
  8. totalHeight=0;
  9. //由于ADD了个footer,所以总量减去1
  10. Log.d("listAdapter.getCount()",""+listAdapter.getCount());
  11. for(inti=0,len=listAdapter.getCount()-1;i<len;i++){
  12. ViewlistItem=listAdapter.getView(i,null,listView);
  13. listItem.measure(0,0);
  14. totalHeight+=listItem.getMeasuredHeight();
  15. Log.d("getMeasuredHeight",""+listItem.getMeasuredHeight());
  16. }
  17. totalHeight=totalHeight+(listView.getDividerHeight()*(listAdapter.getCount()-1));
  18. }

计算得到了总高度。

5)实现动画效果

解决:

[java] view plain copy
  1. /**
  2. *启动打印订单动画
  3. */
  4. rivatevoidstartAnimation(){
  5. anim=newTranslateAnimation(0.0f,0.0f,-totalHeight,0);
  6. anim.setDuration(1000);
  7. anim.setFillAfter(true);
  8. anim.setAnimationListener(newAnimationListener(){
  9. @Override
  10. publicvoidonAnimationStart(Animationanimation){
  11. //TODOAuto-generatedmethodstub
  12. }
  13. @Override
  14. publicvoidonAnimationRepeat(Animationanimation){
  15. //TODOAuto-generatedmethodstub
  16. }
  17. @Override
  18. publicvoidonAnimationEnd(Animationanimation){
  19. //TODOAuto-generatedmethodstub
  20. cListview.clearAnimation();
  21. }
  22. });
  23. cListview.startAnimation(anim);

最后来看看动画效果把:

Android 仿订单出票效果 (附DEMO)_第2张图片


由于是第一次写博客,有不足之处望各位大神提出意见和建议,共同进步。谢谢!

转载请附上:http://blog.csdn.net/vipzjyno1/article/details/20623401

DEMO源码下载链接:

http://download.csdn.net/detail/vipzjyno1/7000355





更多相关文章

  1. android动画效果演示
  2. android中填充界面布局的三种方式
  3. Android 多扩展布局ChipGroup使用
  4. TextView使用Paint设置下划线删除线效果
  5. Android 图片平铺效果bitmap
  6. Android使用RecyclerView实现瀑布流效果的列表展示
  7. Android实现Banner轮播效果
  8. android: slide 滑动动画效果
  9. Android实现win8磁铁效果

随机推荐

  1. Android:Parcelable/Bundle/IBinder
  2. minSdkVersion各个版本号对应android版本
  3. android添加广告之--admob
  4. Android中的背景音频与MediaSessionCompa
  5. Android(安卓)ScreenShot 屏幕截图
  6. Android(安卓)Framework 基础
  7. Android(安卓)横向选择器(HorizontalPick
  8. android 下载安装并打开apk
  9. Android(安卓)SharedPreferences一般的读
  10. android美化对话框