android实现屏幕滑动(类似主屏滑动第一屏---->到第2屏)

写这篇文章的初衷是因为我学习到了新的知识,在android这个新领驭我表示我压力很大,所以得赶紧学啊。。这篇文章是原创,但是文中有部分代码是从我的下载的demo中 copy 过来的(我一向是看别的代码就学习思想,了解整个过程。。。坛友无喷!)


好了上面罗嗦了很多,先大致说一下这篇文章的重点:如题 我想怎么实现屏幕类似于主屏的那个

切换效果,但是我们 又可以让你在当前屏幕下能够上下滚动。那么怎么实现呢?其实使用

ViewFlipper 翻转视图 和 ScrollView 就行了。 思路如下:首先我们要配置一个 ViewFlipper

,这个就是用于视图的切换的,如果我在这个ViewFlipper 再添加ScrollView 是不是就可以实现

上下滚动了。。。呵呵!对吧,貌似这个逻辑是可行的哦!

好了接下来 我们一步一步的来,首先在我们在 layout 的主程序界面main.xml中添加

ViewFlipper组件然后定义其id 方便待会程序使用(暂且 就叫viewFlipper吧),然后再另外

创建一个layout文件里面定义一个ScrollView(注意这个scrollView 是你重写系统的ScrollView 一定要重写哦。。。重写的效果就是为了在 onTouchEvent 的时候能添加上 手势探测 这个类 GestureDetector 不然的话如果使用 系统的我不知道能不能实现 貌似没有直接实现的方法)

好了准备工作就到这里然后我们开始在activity中进行设置了。。


首先呢 。。还是取得整个main.xml的View


requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);//main里面定义我们的那个ViewFlipper 哦


然后 就是取得这个ViewFlipper 了。。他的Id 就是 viewFlipper


ViewFlipper viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper);

拿到这个对象之后最重要的就是要为这个翻转的 视图填充内容了。。。。(没有内容的话我们还让他翻转个屁啊!哈哈。。。)

所以我们要调用他的
addView
方法了,那么接下来就是取得 要添加的对

象了。这里我们定义了一个LayouInflater从当前类 来获取这个视图(ScrollView)

直接使用LayouInflater下面的
inflate(R.layout.view, null);
这个方法填充这个我们暂且就称作一个scrollView,然后通过scrollView去拿到view.xml中 定义的ScrollView(一定要是自己重写过而且已经设置了手势探测器 的哦)定义它为scrollView 好了。。

然后给scrollView 设置


scroll.setOnTouchListener(onTouchListener);
GestureDetector gestureDetector = new GestureDetector(new GestureListener());
private View.OnTouchListener onTouchListener = new View.OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

return gestureDetector.onTouchEvent(event);
}
};


触摸事件和手势事件。下面看一些手势监听:


GestureListener extends SimpleOnGestureListener{
//这里面就是去实现所有的方法了。。。。。。但是除了一个方法之外其他的都没必要重写

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY){
// TODO Auto-generated method stub

if (e1.getX() - e2.getX() > 100 && Math.abs(velocityX) > 50) {

selectedPosition = selectedPosition + 1 < titleArray.length ? (selectedPosition + 1) : 0;

viewFlipper.addView(getContentView());
viewFlipper.setInAnimation(AnimationControl.inFromRightAnimation());
viewFlipper.setOutAnimation(AnimationControl.outToLeftAnimation());
viewFlipper.showNext();
viewFlipper.removeViewAt(0);
}
else if (e2.getX() - e1.getX() > 100 && Math.abs(velocityX) > 50) {

selectedPosition = selectedPosition > 0 ? (selectedPosition - 1) : (titleArray.length - 1);
viewFlipper.addView(getContentView());
viewFlipper.setInAnimation(AnimationControl.inFromLeftAnimation());
viewFlipper.setOutAnimation(AnimationControl.outToRightAnimation());
viewFlipper.showNext();
viewFlipper.removeViewAt(0);
}
return true;
}
};



这个地方就是android 来计算你是往左滑动还是向右滑动了。。。判断却是滑动之后会重新填写你 viewFlipper里面的view(既然是用滑动就是view里面的内容就是个数组了。。)然后为viewFlipper顶一下 滑动的效果。。。。

好了整个实现 屏幕滑动的效果已经实现了。。呵呵。。你会觉得他就是一个gallery 。。我也是这么认为的。。。。但是还是有些不同的。。就是那个scrollview 。。如果你里面的内容很多的话。。呵呵。。那就可以实现滚动了。。。不过 你的再填充 ViewFlipper的时候那个布局文件。。的布局类型要是线性布局了。。。。


备注:我要补充一点,博友们可以看看。。ViewFlipper 还有一些很有趣的设置。。比如让view自动滑动。。。这就类似于现在我们在看一个小说然后设置它屏幕滚动 一样。。是不是呢??以及 滚动的频率都是可以设置的。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值