文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android中怎么实现手势翻页效果

2023-05-30 20:19

关注

这篇文章将为大家详细讲解有关Android中怎么实现手势翻页效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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实例 ViewFlipper flipper; // 定义手势检测实例 GestureDetector detector; // 定义一个动画数组,用于为ViewFlipper指定切换动画效果 Animation[] animations = new Animation[4]; // 定义手势动作亮点之间的最小距离 final int FLIP_DISTANCE = 50; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  // 创建手势检测器  detector = new GestureDetector(this, this);  // 获得ViewFlipper实例  flipper = (ViewFlipper) this.findViewById(R.id.flipper);  // 为ViewFlipper添加8个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数组  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) {  // 如果第一个触点事件的X坐标大于第二个触点事件的X坐标超过FLIP_DISTANCE  // 也就是手势从右向左滑  if (e1.getX() - e2.getX() > FLIP_DISTANCE) {   // 为flipper设置切换的动画效果   flipper.setInAnimation(animations[0]);   flipper.setOutAnimation(animations[1]);   flipper.showPrevious();   return true;  }  // 如果第二个触点事件的X坐标大于第一个触点事件的X坐标超过FLIP_DISTANCE  // 也就是手势从右向左滑  else if (e2.getX() - e1.getX() > FLIP_DISTANCE) {   // 为flipper设置切换的动画效果   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>

关于Android中怎么实现手势翻页效果就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯