歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發:Gallery與ImageSwitcher的綜合使用

Android開發:Gallery與ImageSwitcher的綜合使用

日期:2017/3/1 11:16:11   编辑:Linux編程

今天做了一下Gallery與ImageSwitcher的綜合運用,下面是運行的效果,可以點擊或者手動拖動圖片:

下面附上源碼:

  1. package com.Android.cf;
  2. import android.app.Activity;
  3. import android.graphics.drawable.Drawable;
  4. import android.os.Bundle;
  5. import android.view.MotionEvent;
  6. import android.view.View;
  7. import android.view.Window;
  8. import android.view.View.OnTouchListener;
  9. import android.view.ViewGroup.LayoutParams;
  10. import android.view.animation.AnimationUtils;
  11. import android.widget.AdapterView;
  12. import android.widget.Gallery;
  13. import android.widget.ImageSwitcher;
  14. import android.widget.ImageView;
  15. import android.widget.AdapterView.OnItemClickListener;
  16. import android.widget.AdapterView.OnItemSelectedListener;
  17. import android.widget.ViewSwitcher.ViewFactory;
  18. public class MyMain extends Activity implements ViewFactory,
  19. OnItemSelectedListener {
  20. private ImageSwitcher mSwitcher;
  21. private Gallery mGallery;
  22. private int selectedTag = 0;
  23. private int upX, downX;
  24. /** Called when the activity is first created. */
  25. @Override
  26. public void onCreate(Bundle savedInstanceState) {
  27. super.onCreate(savedInstanceState);
  28. requestWindowFeature(Window.FEATURE_NO_TITLE);
  29. setContentView(R.layout.main);
  30. setTitle("圖片顯示");
  31. mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
  32. mSwitcher.setFactory(MyMain.this);
  33. mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
  34. android.R.anim.fade_in));
  35. mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
  36. android.R.anim.fade_out));
  37. mSwitcher.setOnTouchListener(touchlistener);
  38. mGallery = (Gallery) findViewById(R.id.gallery);
  39. mGallery.setAdapter(new ImageAdapter(MyMain.this));
  40. mGallery.setOnItemSelectedListener(this);
  41. }
  42. /**
  43. * (non-Javadoc)
  44. *
  45. * @see android.widget.ViewSwitcher.ViewFactory#makeView()
  46. */
  47. @Override
  48. public View makeView() {
  49. ImageView i = new ImageView(this);
  50. i.setBackgroundColor(0xFF000000);
  51. i.setScaleType(ImageView.ScaleType.FIT_CENTER);
  52. i.setLayoutParams(new ImageSwitcher.LayoutParams(
  53. LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
  54. return i;
  55. }
  56. OnTouchListener touchlistener = new OnTouchListener() {
  57. @Override
  58. public boolean onTouch(View v, MotionEvent event) {
  59. if (event.getAction() == MotionEvent.ACTION_DOWN) {
  60. downX = (int) event.getX(); // 取得按下時 的坐標x
  61. return true;
  62. } else if (event.getAction() == MotionEvent.ACTION_UP) {
  63. upX = (int) event.getX(); // 取得松開時的坐標x
  64. if (upX - downX > 100) { // 從左拖到右,即看前一張
  65. // 如果是第一,則去到尾部
  66. if (mGallery.getSelectedItemPosition() == 0)
  67. selectedTag = mGallery.getCount() - 1;
  68. else
  69. selectedTag = mGallery.getSelectedItemPosition() - 1;
  70. } else if (downX - upX > 100)// 從右拖到左,即看後一張
  71. {
  72. // 如果是最後,則去到第一
  73. if (mGallery.getSelectedItemPosition() == (mGallery
  74. .getCount() - 1))
  75. selectedTag = 0;
  76. else
  77. selectedTag = mGallery.getSelectedItemPosition() + 1;
  78. }
  79. // 改變gallery圖片所選,自動觸發ImageSwitcher的setOnItemSelectedListener
  80. mGallery.setSelection(selectedTag, true);
  81. return true;
  82. }
  83. return false;
  84. }
  85. };
  86. /**
  87. * (non-Javadoc)
  88. *
  89. * @see android.widget.AdapterView.OnItemSelectedListener#onItemSelected(android.widget.AdapterView,
  90. * android.view.View, int, long)
  91. */
  92. @Override
  93. public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
  94. long arg3) {
  95. mSwitcher.setImageResource(ImageAdapter.imageIDs[arg2]);
  96. selectedTag = arg2;
  97. }
  98. /**
  99. * (non-Javadoc)
  100. *
  101. * @see android.widget.AdapterView.OnItemSelectedListener#onNothingSelected(android.widget.AdapterView)
  102. */
  103. @Override
  104. public void onNothingSelected(AdapterView<?> arg0) {
  105. }
  106. }
Copyright © Linux教程網 All Rights Reserved