ViewSwitcher切换ListView的例子

泡在网上的日子 / 文 发表于2013-05-06 20:01 次阅读 ViewSwitcher,android

安卓原生日历的月视图是可以上下滑动切换月份的,但是似乎还没有左右滑动切换年的功能,似乎只有ViewSwitcher才能完整这样的功能。

本文以先以个简单的例子来说明使用ViewSwitcher切换ListView与方法,这个例子是在stackoverflow上看到的,不知道运行起来是否完美,但是能说清楚用法;然后再讲讲我将这个方案用到日历中的时候遇到的性能问题。


一:ViewSwitcher切换ListView的例子

布局如下:

<ViewSwitcher>
  <LinearLayout>
    <ListView />
  </LinearLayout>
  <LinearLayout>
    <ListView />
  </LinearLayout>
</ViewSwitcher>

代码:

public class MMGViewSwitcher extends ViewSwitcher{
private float startX = 0;
private float startY = 0;
private float endX = 0;
private float endY = 0;
public MMGViewSwitcher(Context context, AttributeSet attrs) {
    super(context,attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
    String ActionString="";
    switch(event.getActionMasked())
    {
        case MotionEvent.ACTION_DOWN:
            startX = event.getX();
            startY = event.getY();
            ActionString="ACTION_DOWN";
            break;
        case MotionEvent.ACTION_MOVE:
            ActionString="ACTION_MOVE";
            break;
        case MotionEvent.EDGE_LEFT:
        this.showNext();
            break;
        case MotionEvent.EDGE_RIGHT:
        this.showPrevious();
            break;
        case MotionEvent.ACTION_UP:
            endX = event.getX();
            endY = event.getY();
            if((startX > endX) && Math.abs(startX-endX)>30){
                this.showNext();
            }
            if((startX < endX) && Math.abs(startX-endX)>30){
                this.showPrevious();
            }
            ActionString="ACTION_UP";
        break;
    }
    return true;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
    onTouchEvent(ev);
    return false;
}
}

之所以举这个例子是因为这个例子给了我一点启示,翻遍所有资料,我都没发现MotionEvent有这样两个成员变量:MotionEvent.EDGE_LEFTMotionEvent.EDGE_RIGHT,不知道好不好使但是记住这点以后总有用得到的地方。用在这里也许不好使,但是也许别的什么时候用得着呢。


二:日历的月视图中ViewSwitcher切换ListView遇到的性能问题

我发下日历用这种方法切换ListView的时候反应速度是极其的慢,难道ViewSwitcher只适合包装简单的View?因为我的两个ListView其实是共用一个adapter的不知道这会不会给程序带来负担。

收藏 赞 (1) 踩 (1)
上一篇:用动画实现android app启动界面的渐变效果
几乎所有的app在启动的时候都会有一个类似于开机画面的东西,往往是一张图片,上面写着这个应用程序的提示文字,比如腾讯微博的启动界面就是这样的: 其实实现这种效果的原理很简单,启动界面也是一个activity,当时间到了之后销毁这个activity,并启动下一
下一篇:Android程序框架PhoneGap初探
PhoneGap是由温哥华的一家小公司研发的多平台的移动开发框架,支持流行的大多数移动设备(iPhone,Android ,BlackBerry,Symbian,Palm,Window Phone).目前phonegap获得Apple,IBM,NOKIA,palm等众多公司的支持. phonegap的优点: 1.兼容性,完全做到了written o