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

首頁(yè) > 系統(tǒng) > Android > 正文

Android使用手勢(shì)實(shí)現(xiàn)翻頁(yè)效果

2019-12-12 02:01:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本程序的手勢(shì)檢測(cè)思路就是把Activity的TouchEvent交給GestureDetector處理,本程序使用了一個(gè)ViewFlipper組件,ViewFlipper可使用動(dòng)畫(huà)控制多個(gè)組件之間的切換效果。

本實(shí)例程序通過(guò)GestureDetector來(lái)檢測(cè)用戶(hù)的手勢(shì)動(dòng)作,并根據(jù)手勢(shì)動(dòng)作來(lái)控制ViewFlipper包含的View組件的切換,從而實(shí)現(xiàn)翻頁(yè)效果。

activity_main.xml布局界面代碼:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 定義ViewFlipper組件 --> <ViewFlipper  android:id="@+id/flipper"  android:layout_width="wrap_content"  android:layout_height="wrap_content" /></LinearLayout>

MainActivity.java邏輯代碼:

package com.fukaimei.gestureflip;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.ImageView;import android.widget.ViewFlipper;public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener { // ViewFlipper實(shí)例 ViewFlipper flipper; // 定義手勢(shì)檢測(cè)實(shí)例 GestureDetector detector; // 定義一個(gè)動(dòng)畫(huà)數(shù)組,用于為ViewFlipper指定切換動(dòng)畫(huà)效果 Animation[] animations = new Animation[4]; // 定義手勢(shì)動(dòng)作亮點(diǎn)之間的最小距離 final int FLIP_DISTANCE = 50; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  // 創(chuàng)建手勢(shì)檢測(cè)器  detector = new GestureDetector(this, this);  // 獲得ViewFlipper實(shí)例  flipper = (ViewFlipper) this.findViewById(R.id.flipper);  // 為ViewFlipper添加8個(gè)ImageView組件  flipper.addView(addImageView(R.drawable.img01));  flipper.addView(addImageView(R.drawable.img02));  flipper.addView(addImageView(R.drawable.img03));  flipper.addView(addImageView(R.drawable.img04));  flipper.addView(addImageView(R.drawable.img05));  flipper.addView(addImageView(R.drawable.img06));  flipper.addView(addImageView(R.drawable.img07));  flipper.addView(addImageView(R.drawable.img08));  // 初始化Animation數(shù)組  animations[0] = AnimationUtils.loadAnimation(this, R.anim.left_in);  animations[1] = AnimationUtils.loadAnimation(this, R.anim.left_out);  animations[2] = AnimationUtils.loadAnimation(this, R.anim.right_in);  animations[3] = AnimationUtils.loadAnimation(this, R.anim.right_out); } // 定義添加ImageView的工具方法 private View addImageView(int resId) {  ImageView imageView = new ImageView(this);  imageView.setImageResource(resId);  imageView.setScaleType(ImageView.ScaleType.CENTER);  return imageView; } @Override public boolean onTouchEvent(MotionEvent event) {  // 將該Activity上的觸碰事件交給GestureDetector處理  return detector.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) {  return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) {  return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {  return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {  // 如果第一個(gè)觸點(diǎn)事件的X坐標(biāo)大于第二個(gè)觸點(diǎn)事件的X坐標(biāo)超過(guò)FLIP_DISTANCE  // 也就是手勢(shì)從右向左滑  if (e1.getX() - e2.getX() > FLIP_DISTANCE) {   // 為flipper設(shè)置切換的動(dòng)畫(huà)效果   flipper.setInAnimation(animations[0]);   flipper.setOutAnimation(animations[1]);   flipper.showPrevious();   return true;  }  // 如果第二個(gè)觸點(diǎn)事件的X坐標(biāo)大于第一個(gè)觸點(diǎn)事件的X坐標(biāo)超過(guò)FLIP_DISTANCE  // 也就是手勢(shì)從右向左滑  else if (e2.getX() - e1.getX() > FLIP_DISTANCE) {   // 為flipper設(shè)置切換的動(dòng)畫(huà)效果   flipper.setInAnimation(animations[2]);   flipper.setOutAnimation(animations[3]);   flipper.showNext();   return true;  }  return false; }}

anim/left_in.xml代碼:

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

anim/left_out.xml代碼:

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

anim/right_in.xml代碼:

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

anim/right_out.xml代碼:

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

上面的MainActivity.java邏輯代碼只是實(shí)現(xiàn)了GestureDetector.OnGestureListener的onFling()方法,上面的程序的代碼負(fù)責(zé)實(shí)現(xiàn):當(dāng)e1.getX() - e2.getX()的距離大于特定距離時(shí),即可判斷用戶(hù)手勢(shì)為從右向左滑動(dòng),此時(shí)設(shè)置ViewFlipper采用動(dòng)畫(huà)方式切換為上一個(gè)View;當(dāng)e2.getX() - e2.getX()的距離大于特定距離時(shí),即可判斷用戶(hù)手勢(shì)為從左向右滑動(dòng),此時(shí)設(shè)置ViewFlipper采用動(dòng)畫(huà)方式切換為下一個(gè)View――這樣就實(shí)現(xiàn)了所謂的“翻頁(yè)”效果。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇平县| 佛学| 扎囊县| 汉源县| 商城县| 资溪县| 辉南县| 平乐县| 巴林左旗| 四会市| 财经| 报价| 措美县| 九寨沟县| 五大连池市| 文水县| 台南市| 东阿县| 惠安县| 三穗县| 沁阳市| 五常市| 龙南县| 英吉沙县| 邹城市| 凤台县| 武汉市| 什邡市| 时尚| 迁西县| 鞍山市| 赤峰市| 加查县| 沂源县| 涟源市| 鲁甸县| 铜鼓县| 壤塘县| 名山县| 壤塘县| 双峰县|