国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android使用ViewFlipper和GestrueDetector共同實現滑屏效果實例

2019-10-23 19:45:38
字體:
來源:轉載
供稿:網友

本文實例講述了Android使用ViewFlipper和GestrueDetector共同實現滑屏效果。分享給大家供大家參考,具體如下:

關于GestureDetector的相關知識,前面已經介紹過了,不懂的大家可以去了解一下。

1.main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:background="@drawable/bg"  android:orientation="vertical" >  <ViewFlipper    android:id="@+id/viewFlipper1"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:persistentDrawingCache="animation"    android:flipInterval="1000"    android:inAnimation="@anim/push_left_in"    android:outAnimation="@anim/push_left_out"    >    <include android:id="@+id/lay1" layout="@layout/layout1"/>    <include android:id="@+id/lay2" layout="@layout/layout2"/>  </ViewFlipper></LinearLayout>

注:layout1和layout2 布局很簡單,就是有一個textview和一個button,就不在這里寫出了。其中包含了兩個特效xml文件,放在res/anim下

1.push_left_in

<?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.0"  android:toAlpha="1.0"  android:duration="500" /></set>

2 push_left_out

<?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.0"  android:duration="500" /></set>

主類:

package com.wj.gesture;import android.app.Activity;import android.os.Bundle;import android.view.GestureDetector;import android.view.GestureDetector.OnDoubleTapListener;import android.view.GestureDetector.OnGestureListener;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.view.animation.AccelerateInterpolator;import android.view.animation.Animation;import android.view.animation.TranslateAnimation;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;import android.widget.ViewFlipper;public class GestureDetectorTest extends Activity implements OnClickListener, OnTouchListener,OnGestureListener,OnDoubleTapListener{  GestureDetector gestureDetector;  private Button next = null,up = null;  private ViewFlipper flipper = null;  private static final int FLING_MIN_DISTANCE = 100;  private static final int FLING_MIN_VELOCITY = 200;  @Override  public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    initview();    setListener();  }  private void initview(){    gestureDetector = new GestureDetector(this);    next = (Button)this.findViewById(R.id.button1);    up = (Button)this.findViewById(R.id.button2);    next.setOnClickListener(this);    up.setOnClickListener(this);    flipper  = (ViewFlipper)this.findViewById(R.id.viewFlipper1);    flipper.setLongClickable(true);  }  private void setListener(){    flipper.setOnTouchListener(this);  }  @Override  public boolean onTouch(View v, MotionEvent event) {    //Toast.makeText(this, "ontouch", 1000).show();    return gestureDetector.onTouchEvent(event);  }  @Override  public boolean onDown(MotionEvent e) {    // TODO Auto-generated method stub    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;  }  @Override  public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,      float distanceY) {    return false;  }  @Override  public void onLongPress(MotionEvent e) {    // TODO Auto-generated method stub  }  @Override  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,      float velocityY) {    if (e1.getX()-e2.getX()>FLING_MIN_DISTANCE&&Math.abs(velocityX)>FLING_MIN_VELOCITY) {      flipper.setInAnimation(inFromRightAnimation());      flipper.setOutAnimation(outToLeftAnimation());      flipper.showNext();    }else if (e2.getX()-e1.getX()>FLING_MIN_DISTANCE&&Math.abs(velocityX) > FLING_MIN_VELOCITY) {      flipper.setInAnimation(inFromLeftAnimation());      flipper.setOutAnimation(outToRightAnimation());      flipper.showPrevious();    }    return false;  }  protected Animation inFromRightAnimation() {    Animation inFromRight = new TranslateAnimation(        Animation.RELATIVE_TO_PARENT, +1.0f,        Animation.RELATIVE_TO_PARENT, 0.0f,        Animation.RELATIVE_TO_PARENT, 0.0f,        Animation.RELATIVE_TO_PARENT, 0.0f);    inFromRight.setDuration(500);    inFromRight.setInterpolator(new AccelerateInterpolator());    return inFromRight;  }  protected Animation outToLeftAnimation() {    Animation outtoLeft = new TranslateAnimation(        Animation.RELATIVE_TO_PARENT, 0.0f,        Animation.RELATIVE_TO_PARENT, -1.0f,        Animation.RELATIVE_TO_PARENT, 0.0f,        Animation.RELATIVE_TO_PARENT, 0.0f);    outtoLeft.setDuration(500);    outtoLeft.setInterpolator(new AccelerateInterpolator());    return outtoLeft;  }  protected Animation inFromLeftAnimation() {    Animation inFromLeft = new TranslateAnimation(        Animation.RELATIVE_TO_PARENT, -1.0f,        Animation.RELATIVE_TO_PARENT, 0.0f,        Animation.RELATIVE_TO_PARENT, 0.0f,        Animation.RELATIVE_TO_PARENT, 0.0f);    inFromLeft.setDuration(500);    inFromLeft.setInterpolator(new AccelerateInterpolator());    return inFromLeft;  }  protected Animation outToRightAnimation() {    Animation outtoRight = new TranslateAnimation(        Animation.RELATIVE_TO_PARENT, 0.0f,        Animation.RELATIVE_TO_PARENT, +1.0f,        Animation.RELATIVE_TO_PARENT, 0.0f,        Animation.RELATIVE_TO_PARENT, 0.0f);    outtoRight.setDuration(500);    outtoRight.setInterpolator(new AccelerateInterpolator());    return outtoRight;  }  @Override  public boolean onSingleTapConfirmed(MotionEvent e) {    // TODO Auto-generated method stub    return false;  }  @Override  public boolean onDoubleTap(MotionEvent e) {    // TODO Auto-generated method stub    return false;  }  @Override  public boolean onDoubleTapEvent(MotionEvent e) {    // TODO Auto-generated method stub    return false;  }  @Override  public void onClick(View v) {    if (v==next) {      flipper.showNext();    }else{      flipper.showPrevious();    }  }}

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浮梁县| 闵行区| 于都县| 黎川县| 塔河县| 时尚| 翁牛特旗| 岳池县| 长兴县| 株洲市| 红桥区| 潮州市| 邵东县| 通江县| 大田县| 南皮县| 宁城县| 镇巴县| 吴江市| 日土县| 祁阳县| 额济纳旗| 洛南县| 连江县| 万宁市| 宁夏| 罗城| 南城县| 尉氏县| 西充县| 安乡县| 莱州市| 黄骅市| 承德市| 临武县| 青神县| 隆安县| 延川县| 汪清县| 连南| 庆城县|