android 左右页面滑动(滑屏)增加layout文件 而不是drawable(还有activity)

android 左右页面滑动(滑屏)增加layout文件 而不是drawable(还有activity)  

 |字号 订阅

ViewFlipper + GestureDetector

简单的实现:  

这里还需实现 implements OnGestureListener 。

另外需要4个动画的配置文件: 说到Animation,我们先看下如何在Android中实现自定义Animation。自定义的Animation是以XML格式定义的,定义好的XML文件存放在res/anim中。

 

  一般的Animation有以下四种类型:

  1. Alpha:渐变透明度动画效果

  2. Scale:渐变尺寸伸缩动画效果

  3. Translate:画面转换位置移动动画效果

  4. Rotate:画面转换位置移动动画效果 

  push_left_in.xml文件中代码:

<?xml version="1.0" encoding="utf-8"?>  

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
        android:duration="500" />
    <alpha android:fromAlpha="0.1" android:toAlpha="1.0"
        android:duration="500" />
</set>

 

 

  push_left_out.xml文件中代码: 

 <?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-100%p"
        android:duration="500" />
    <alpha android:fromAlpha="1.0" android:toAlpha="0.1"
        android:duration="500" />

</set>  

 

  push_right_in.xml文件中代码:

<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0"
        android:duration="500" />
    <alpha android:fromAlpha="0.1" android:toAlpha="1.0"
        android:duration="500" />
</set>

 

   push_right_out.xml文件中代码:

<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p"
        android:duration="500" />
    <alpha android:fromAlpha="1.0" android:toAlpha="0.1"
        android:duration="500" />

</set>  

//以下是主代码了:

private ViewFlipper _viewFlipper;

private GestureDetector detector; 

//增加activity 而不是drawable

  private View addViewObject(int layout){ 

return  LayoutInflater.from(this).inflate(layout, null); 

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.main_ui);

 detector= new GestureDetector(this);

_viewFlipper=(ViewFlipper) findViewById(R.id.viewflipper_ui);

_viewFlipper.addView(this.addViewObject(R.layout.viewpager_two));

_viewFlipper.addView(this.addViewObject(R.layout.viewpager_two));

_viewFlipper.addView(this.addViewObject(R.layout.viewpager_three));

detector= new GestureDetector(this);

_viewFlipper=(ViewFlipper) findViewById(R.id.viewflipper_ui);

}

// onTouchEvent

@Override public boolean onTouchEvent(MotionEvent event) { 

// return super.onTouchEvent(event); 

 
return detector.onTouchEvent(event);

 } 

 @Override public boolean onDown(MotionEvent e) { return false; }

//主要是这个方法,其它方法都是不需要写代码的。不过看个人需求吧。

 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 

 if (e1.getX() - e2.getX() > 50) {

 this._viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));
   this._viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));
 this._viewFlipper.showNext(); return true; 

} else if (e1.getX() - e2.getX() < -50) { 
   this._viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));  
  this._viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_out));                        this._viewFlipper.showPrevious(); return true; } return false; 

 }

@Override public void onLongPress(MotionEvent e) {

 }

 @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 

 return false; } 

 @Override public void onShowPress(MotionEvent e) { 

 // TODO Auto-generated method stub } 

 @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; }

 

//研究了好久。

滑动跳转为activity:

继承extends ActivityGroup

然后:

_viewFlipper.addView(getLocalActivityManager().startActivity("", new Intent(MainUiActivity.this, GridViewMore.class)).getDecorView(), 0); _viewFlipper.addView(getLocalActivityManager().startActivity("", new Intent(MainUiActivity.this,GridViewIntroduce.class)).getDecorView(),
1); _viewFlipper.setDisplayedChild(0);

其余代码不变!

 

时间: 2024-10-31 06:39:28

android 左右页面滑动(滑屏)增加layout文件 而不是drawable(还有activity)的相关文章

javascript单页面手势滑屏切换原理详解_javascript技巧

H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 假设有5个页面,每个页面占屏幕100%宽,则创建一个DIV容器viewport,将其宽度(width) 设置为500%,然后将5个页面装入容器中,并让这5个页面平分整个容器,最后将容器的默认位置设置为0,overflow设置为hidden,这样屏幕就默认显示第一个页面. <div id="v

luancher拖拽-android Launcher拖拽滑屏如何阻止从第二屏滑到第一屏?

问题描述 android Launcher拖拽滑屏如何阻止从第二屏滑到第一屏? 我需要自定义第一屏的内容,因此不想拖拽图标的时候拖到第一屏.以下帖子http://blog.csdn.net/chenshaoyang0011/article/details/7854947 说是DragController控制的,可是事实上我在其ontouch事件中,还有handleMoveEvent()中打log发现里面判断是否拖动到左边或右边的然后滑屏的代码根本没有调用,试着加个判断也没有效果,望各位大神指导一

qml-QML 如何实现多页面滑动切屏?求大神解答...

问题描述 QML 如何实现多页面滑动切屏?求大神解答... 我想要用QML实现左右滑动切屏,就像手机那样效果,求大神帮助 解决方案 http://www.qtcn.org/bbs/read-htm-tid-53204.html 这个论坛帖讨论了和你类似的问题,你可以点击进去看看. 如果回答对你有帮助,请采纳

android 从页面顶部滑出选择框 如何实现

问题描述 android 从页面顶部滑出选择框 如何实现,虽然有alertDialog可以实现选择框,但是弹出的太丑了,不知道能不能在弹出效果和内部样式上进行调整 问题补充:zhaoshunxin 写道 解决方案 你可以试试SlidingDrawer,实现android抽屉

H5单页面手势滑屏切换原理

效果图如下所示, 1.实现原理 假设有5个页面,每个页面占屏幕100%宽,则创建一个DIV容器viewport,将其宽度(width) 设置为500%,然后将5个页面装入容器中,并让这5个页面平分整个容器,最后将容器的默认位置设置为0,overflow设置为hidden,这样屏幕就默认显示第一个页面. <div id="viewport" class="viewport">     <div class="pageview" s

Android实现实时滑动ViewPager的2种方式_Android

先看看效果图: activity_main.xml  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_par

Android组件banner实现左右滑屏效果_Android

什么是banner组件?在许多Android应用上,比如爱奇艺客户端.百度美拍.应用宝等上面,都有一个可以手动滑动的小广告条,这就是banner,实际应用中的banner,其信息(图片和点击行为)是后台可配置的,是需要通过网络从后台拉取的.网上有许多手动滑屏的例子,但是一般只是个demo,无法在实际中使用,因为其一般没有考虑如下几类问题:图片缓存.OOM问题.是否可灵活配置.是否预留外部接口以及是否封装良好.没有良好的封装,手动滑屏加在代码中,会使得代码变得很烂很脆弱. 1.原理参见下图.整个组

Android组件banner实现左右滑屏效果

什么是banner组件?在许多Android应用上,比如爱奇艺客户端.百度美拍.应用宝等上面,都有一个可以手动滑动的小广告条,这就是banner,实际应用中的banner,其信息(图片和点击行为)是后台可配置的,是需要通过网络从后台拉取的.网上有许多手动滑屏的例子,但是一般只是个demo,无法在实际中使用,因为其一般没有考虑如下几类问题:图片缓存.OOM问题.是否可灵活配置.是否预留外部接口以及是否封装良好.没有良好的封装,手动滑屏加在代码中,会使得代码变得很烂很脆弱. 1.原理 参见下图.整个

Android基于ViewPager+Fragment实现左右滑屏效果的方法

本文实例讲述了Android基于ViewPager+Fragment实现左右滑屏效果的方法.分享给大家供大家参考,具体如下: 1.xml布局模板 <android.support.v4.view.ViewPager android:id="@+id/local_software_viewpager" android:layout_width="match_parent" android:layout_height="match_parent"