Android_左右滑动切换背景

本文介绍如何使用OnGestureListener和OnTouchListener接口实现左右滑动切换背景图片的功能,并提供了一个实例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近想做一个左右滑动切换背景图片的应用,特地将自己的研究分享一下:

这个需要继承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);

}

附送代码:

  1. public class SwitcherActivity extends Activity implements OnGestureListener,
  2. OnTouchListener {
  3. /** Called when the activity is first created. */
  4. LinearLayout bgLayout = null;
  5. private GestureDetector mGesture = null;
  6. private int flag = 3;
  7. @Override
  8. public void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.main);
  11. mGesture = new GestureDetector(this);
  12. bgLayout = (LinearLayout) findViewById(R.id.bg);
  13. bgLayout.setBackgroundResource(R.drawable.bg3);
  14. bgLayout.setOnTouchListener(this);
  15. bgLayout.setLongClickable(true);
  16. }
  17. public boolean onDown(MotionEvent e) {
  18. // TODO Auto-generated method stub
  19. return false;
  20. }
  21. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
  22. float velocityY) {
  23. // 处理左右滑动
  24. if (e1.getX() - e2.getX() > 100) { // 向左滑动
  25. if (flag == 3) {
  26. bgLayout.setBackgroundResource(R.drawable.bg4);
  27. flag = 4;
  28. return true;
  29. }
  30. if (flag == 4) {
  31. bgLayout.setBackgroundResource(R.drawable.bg5);
  32. flag = 5;
  33. return true;
  34. }
  35. if (flag == 1) {
  36. bgLayout.setBackgroundResource(R.drawable.bg2);
  37. flag = 2;
  38. return true;
  39. }
  40. if (flag == 2) {
  41. bgLayout.setBackgroundResource(R.drawable.bg3);
  42. flag = 3;
  43. return true;
  44. }
  45. } else if (e1.getX() - e2.getX() < -100) { // 向右滑动
  46. if (flag == 3) {
  47. bgLayout.setBackgroundResource(R.drawable.bg2);
  48. flag = 2;
  49. return true;
  50. }
  51. if (flag == 2) {
  52. bgLayout.setBackgroundResource(R.drawable.bg1);
  53. flag = 1;
  54. return true;
  55. }
  56. if (flag == 5) {
  57. bgLayout.setBackgroundResource(R.drawable.bg4);
  58. flag = 4;
  59. return true;
  60. }
  61. if (flag == 4) {
  62. bgLayout.setBackgroundResource(R.drawable.bg3);
  63. flag = 3;
  64. return true;
  65. }
  66. }
  67. return false;
  68. }
  69. public void onLongPress(MotionEvent e) {
  70. // TODO Auto-generated method stub
  71. }
  72. public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
  73. float distanceY) {
  74. // TODO Auto-generated method stub
  75. return false;
  76. }
  77. public void onShowPress(MotionEvent e) {
  78. // TODO Auto-generated method stub
  79. }
  80. public boolean onSingleTapUp(MotionEvent e) {
  81. // TODO Auto-generated method stub
  82. return false;
  83. }
  84. public boolean onTouch(View v, MotionEvent event) {
  85. // TODO Auto-generated method stub
  86. return this.mGesture.onTouchEvent(event);
  87. }
  88. }
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);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值