Android编程实现左右滑动切换背景的方法
作者:zqiang_55 发布时间:2022-03-21 17:56:49
标签:Android,滑动,切换背景
本文实例讲述了Android编程实现左右滑动切换背景的方法。分享给大家供大家参考,具体如下:
最近想做一个左右滑动切换背景图片的应用,特地将自己的研究分享一下:
这个需要继承2个监听接口 OnGestureListener, OnTouchListener
关于这2个接口大家可以在网上查一下
同时需要设置2个属性
bgLayout.setOnTouchListener(this);
bgLayout.setLongClickable(true);
并且在这个函数中有如下这几句话
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return this.mGesture.onTouchEvent(event);
}
附送代码:
public class SwitcherActivity extends Activity implements OnGestureListener,
OnTouchListener {
/** Called when the activity is first created. */
LinearLayout bgLayout = null;
private GestureDetector mGesture = null;
private int flag = 3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mGesture = new GestureDetector(this);
bgLayout = (LinearLayout) findViewById(R.id.bg);
bgLayout.setBackgroundResource(R.drawable.bg3);
bgLayout.setOnTouchListener(this);
bgLayout.setLongClickable(true);
}
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// 处理左右滑动
if (e1.getX() - e2.getX() > 100) { // 向左滑动
if (flag == 3) {
bgLayout.setBackgroundResource(R.drawable.bg4);
flag = 4;
return true;
}
if (flag == 4) {
bgLayout.setBackgroundResource(R.drawable.bg5);
flag = 5;
return true;
}
if (flag == 1) {
bgLayout.setBackgroundResource(R.drawable.bg2);
flag = 2;
return true;
}
if (flag == 2) {
bgLayout.setBackgroundResource(R.drawable.bg3);
flag = 3;
return true;
}
} else if (e1.getX() - e2.getX() < -100) { // 向右滑动
if (flag == 3) {
bgLayout.setBackgroundResource(R.drawable.bg2);
flag = 2;
return true;
}
if (flag == 2) {
bgLayout.setBackgroundResource(R.drawable.bg1);
flag = 1;
return true;
}
if (flag == 5) {
bgLayout.setBackgroundResource(R.drawable.bg4);
flag = 4;
return true;
}
if (flag == 4) {
bgLayout.setBackgroundResource(R.drawable.bg3);
flag = 3;
return true;
}
}
return false;
}
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
}
public boolean onSingleTapUp(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
return this.mGesture.onTouchEvent(event);
}
}
希望本文所述对大家Android程序设计有所帮助。


猜你喜欢
- Write()和WriteLine()都是System.Console提供的方法,两着主要用来将输出流由指定的输出装置(默认为屏幕)显示出来
- 1、写在前面今天群里一个小伙伴问了这样一个问题,扩展方法与实例方法的执行顺序是什么样子的,谁先谁后(这个问题会在文章结尾回答)。所以写了这边
- 利用C#编写一个计算器。如下图,能够完成基本的四则运算。当然这个程序甚至还不上Windows附件那个自带的多功能计算器。 不过这个
- //while和for循环可以相互转换,以下为简单格式;for(1;2;3) A;//等价于
- Spring Boot应用内存飙升一个简单的Spring Boot应用, 几乎只有一个用户在用,内存竟然达到1.2G, 可怕服务现状由于之前
- Java List 用法实例详解Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解
- C#字符集编码的使用ASCII:西欧字符集GB2312:国家简体中文字符集,兼容ASCII。BIG5:统一繁体字编码GBK:它是GB2312
- 前言:本文主要讲解以c语言编写猜数字游戏,目的是介绍C语言中的循环和分支的具体用法。一:猜数字游戏基本介绍&对程序预期.猜数字游戏,
- jdk1.8中的for循环jdk1.8 从语法角度,感觉发生的变化还是蛮大的。在此记录一下。for 循环 public stati
- 理解事务之前,先讲一个你日常生活中最常干的事:取钱。比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱
- 启用开发者模式①填写服务器配置启用开发模式需要先成为开发者,而且编辑模式和开发模式只能选择一个(进入微信公众平台=>开发=>基本
- 工厂方法模式动机创建一个对象往往需要复杂的过程,所以不适合包含在一个复合工厂中,当有新的产品时,需要修改这个复合的工厂,不利于扩展。而且,有
- 在看了网上多篇rxjava和retrofit的文章后,大概有了一个初步的认识,刚好要做一个多图上传的功能,就拿它开刀吧。下面的内容将基于之前
- 1.基本思路①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中②.已加锁+未
- 简介机器可以读,人为什么不能读?只要我们掌握java class文件的密码表,我们可以把二进制转成十六进制,将十六进制和我们的密码表进行对比
- 目录1、通过session中的token验证步骤1:创建自定义注解步骤2:创建自定义 * (@slf4j是lombok的注解)步骤3:将自定
- 最近有小伙伴问我,双枚举类该怎么写,还得包括根据key取值方法。于是就手写一个案例如下:/** * 关系类型枚举 */public enum
- 1.打开idea -> file -> settings ->Plugins 搜索Free Mybatis p
- 目录1.系统需求分析1.1 系统功能及框图该项目实现了备忘录的创建,修改,删除,查询,对备忘录数目的统计和软件的说明。1.2 系统需求功能&
- 一、Android 个人手机通讯录开发数据存储:SQLite 数据库开发工具:Android Studio二、Phone Module 简介