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

简介: android 左右页面滑动(滑屏)增加layout文件 而不是drawable(还有activity)    |字号 订阅 ViewFlipper + GestureDetector 简单的实现:   这里还需实现 implements OnGestureListener 。

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);
其余代码不变!

 
相关文章
|
3月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
|
5月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
397 1
|
2月前
|
XML 前端开发 Android开发
Android:UI:Drawable:View/ImageView与Drawable
通过本文的介绍,我们详细探讨了Android中Drawable、View和ImageView的使用方法及其相互关系。Drawable作为图像和图形的抽象表示,提供了丰富的子类和自定义能力,使得开发者能够灵活地实现各种UI效果。View和ImageView则通过使用Drawable实现了各种图像和图形的显示需求。希望本文能为您在Android开发中使用Drawable提供有价值的参考和指导。
48 2
|
3月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
102 6
|
3月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
35 3
|
3月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
33 3
|
3月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
24 0
|
4月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:
67 4
|
3月前
|
ARouter Android开发
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
190 0
|
4月前
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
66 0