写这篇文章的初衷是因为我学习到了新的知识,在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{//这里面就是去实现所有的方法了。。。。。。但是除了一个方法之外其他的都没必要重写@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY){// TODO Auto-generated method stubif (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自动滑动。。。这就类似于现在我们在看一个小说然后设置它屏幕滚动 一样。。是不是呢??以及 滚动的频率都是可以设置的。。。

更多相关文章

  1. Android自定义控件系列案例【二】
  2. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来
  3. Android(安卓)自定义View实现炮弹射击小游戏
  4. Android自定义主题样式详解(结合自定义title栏讲解)
  5. LongClick原理、上下文菜单原理、EditText长按弹窗原理、WebView
  6. Android实现左右滑动指引效果(使用ViewPager)
  7. Android快速自定义控件+实战演示(三)完整键盘和组合回调!
  8. Android(安卓)实现形态各异的双向侧滑菜单 自定义控件来袭
  9. android中使用ViewPager实现图片左右拖动

随机推荐

  1. stagefright
  2. Android(安卓)自定义标题栏Title Bar
  3. [Android(安卓)Studio]使用AS开发Android
  4. android 来电自动接听和自动挂断
  5. Android(安卓)(一) Android(安卓)studio 安
  6. Android之OnGestureListener实现图片的左
  7. Android消息处理机制2——Message
  8. Android获取、设置桌面
  9. Android(安卓)2.2 Platform
  10. Android(安卓)Tab切换表格头