当前位置: 代码迷 >> Android >> Android开发:GridView与ListView相互切换(动画效果)(转)
  详细解决方案

Android开发:GridView与ListView相互切换(动画效果)(转)

热度:78   发布时间:2016-04-28 07:04:58.0
Android开发:GridView与ListView互相切换(动画效果)(转)

http://www.sunyifeng.com/blog/post/19.html?

?

对于一些软件来说,希望达到?GridViewListView这两种方式来显示相同的内容,在内容较少时,用户可以选择九宫格(GridView)方式浏览,在内容较多时可以切换为列表浏览(ListView),那么,这种方式改如何切换呢.

? ?我们知道,对于任意一个ui组件来说都是View的子类,View包含一个方法View.setVisibility (),该方法可以控制View的显示或者隐藏,那么只要在buttonclick事件中加入对于相应View的显示/隐藏控制即可

切换为GridView,ListView隐藏

切换为ListView,GridView隐藏

那么,该如何布局呢?很简单,先假设只有GridView来布局,布局完成之后,GridView之后在更上一个完全相同属性的listview就可以了.注意在activity oncreate时就需要将其中一个隐藏

布局文件如下


?

接着,我们就可以在buttononclick事件中通过setVisibility(View.GONE)来隐藏了

当然,为了让界面更好看

我们还可以为这两个View加上动画以girdview为例

gridview.setLayoutAnimation();

这个方法就可以为对应的view加上动画了

我这里写一个模拟3d的切换动画生成对应的layoutanimationController

通过Rotate3d这个类实现

1
2
3
4
5
6
7
8
9
public?static?LayoutAnimationController getgridlayoutAnim()
??{
??LayoutAnimationController controller;
??Animation anim=new?Rotate3dAnimation(90f,0f,0.5f,0.5f,0.5f,false);
??anim.setDuration(500);
??controller=new?LayoutAnimationController(anim,0.1f);
??controller.setOrder(LayoutAnimationController.ORDER_NORMAL);
??return?controller;
??}

?

?

?

将这个layoutanimationcontroller传入后再试试?

动画还是挺炫的呵呵

image

p.s 有点卡是因为只是模拟器,真机非常流畅

  相关解决方案