歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android Gallery與ImageView的結合使用

Android Gallery與ImageView的結合使用

日期:2017/3/1 10:23:10   编辑:Linux編程

Gallery是一個內部元素可以水平滾動,並且可以把當前選擇的子元素定位在它中心的布局組件。

本程序的運行效果如下所示:


具體實現如下: 1、建立一個新項目 2、拷貝10個圖片文件到res/drawable目錄 3、res/layout/main.xml文件的內容如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- FrameLayout用來顯示層疊效果 -->
  3. <FrameLayout xmlns:Android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:orientation="vertical" >
  7. <!-- ImageView用來顯示背景 -->
  8. <ImageView
  9. android:id="@+id/iv"
  10. android:layout_width="fill_parent"
  11. android:layout_height="fill_parent"
  12. android:src="@drawable/a01"
  13. />
  14. <!-- Gallery來展示畫廊 -->
  15. <Gallery xmlns:android="http://schemas.android.com/apk/res/android"
  16. android:id="@+id/gallery"
  17. android:layout_width="fill_parent"
  18. android:layout_height="wrap_content"
  19. android:spacing="5dp"
  20. />
  21. </FrameLayout>
其中我們使用FrameLayout來實現疊加效果,使用ImageView來顯示大圖,Gallery來展示畫廊,android:spacing="5dp" 屬性則是用來設置元素之間的間隔。4、在res/values/目錄中新建一個attrs.xml內容如下:其中我們使用FrameLayout來實現疊加效果,使用ImageView來顯示大圖,Gallery來展示畫廊,android:spacing="5dp" 屬性則是用來設置元素之間的間隔。4、在res/values/目錄中新建一個attrs.xml內容如下:其中我們使用FrameLayout來實現疊加效果,使用ImageView來顯示大圖,Gallery來展示畫廊,android:spacing="5dp" 屬性則是用來設置元素之間的間隔。 4、在res/values/目錄中新建一個attrs.xml內容如下: [html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <declare-styleable name="HelloGallery">
  4. <attr name="android:galleryItemBackground"/>
  5. </declare-styleable>
  6. </resources>
5、在MainHelloGallery.java中的內容如下:5、在MainHelloGallery.java中的內容如下:5、在Test_galleryActivity.java中的內容如下:
  1. package m.m.m;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.content.res.TypedArray;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.AdapterView;
  9. import android.widget.AdapterView.OnItemClickListener;
  10. import android.widget.BaseAdapter;
  11. import android.widget.Gallery;
  12. import android.widget.ImageView;
  13. import android.widget.Toast;
  14. public class Test_galleryActivity extends Activity {
  15. /** Called when the activity is first created. */
  16. @Override
  17. public void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.main);
  20. // 定義UI組件
  21. final ImageView iv = (ImageView) findViewById(R.id.iv);
  22. Gallery g = (Gallery) findViewById(R.id.gallery);
  23. // 設置圖片匹配器
  24. g.setAdapter(new ImageAdapter(this));
  25. // 設置AdapterView點擊監聽器,Gallery是AdapterView的子類
  26. g.setOnItemClickListener(new OnItemClickListener() {
  27. @Override
  28. public void onItemClick(AdapterView<?> parent, View view,
  29. int position, long id) {
  30. // 顯示點擊的是第幾張圖片
  31. Toast.makeText(Test_galleryActivity.this, "" + position,
  32. Toast.LENGTH_LONG).show();
  33. // 設置背景部分的ImageView顯示當前Item的圖片
  34. iv.setImageResource(((ImageView) view).getId());
  35. }
  36. });
  37. }
  38. // 定義繼承BaseAdapter的匹配器
  39. public class ImageAdapter extends BaseAdapter {
  40. // Item的修飾背景
  41. int mGalleryItemBackground;
  42. // 上下文對象
  43. private Context mContext;
  44. // 圖片數組
  45. private Integer[] mImageIds = { R.drawable.a01,
  46. R.drawable.a02, R.drawable.a03,
  47. R.drawable.a04, R.drawable.a05,
  48. R.drawable.a06, R.drawable.a07,
  49. R.drawable.a08 };
  50. // 構造方法
  51. public ImageAdapter(Context c) {
  52. mContext = c;
  53. // 讀取styleable資源
  54. TypedArray a = obtainStyledAttributes(R.styleable.HelloGallery);
  55. mGalleryItemBackground = a.getResourceId(
  56. R.styleable.HelloGallery_android_galleryItemBackground, 0);
  57. a.recycle();
  58. }
  59. // 返回項目數量
  60. @Override
  61. public int getCount() {
  62. return mImageIds.length;
  63. }
  64. // 返回項目
  65. @Override
  66. public Object getItem(int position) {
  67. return position;
  68. }
  69. // 返回項目Id
  70. @Override
  71. public long getItemId(int position) {
  72. return position;
  73. }
  74. // 返回視圖
  75. @Override
  76. public View getView(int position, View convertView, ViewGroup parent) {
  77. ImageView iv = new ImageView(mContext);
  78. iv.setImageResource(mImageIds[position]);
  79. // 給生成的ImageView設置Id,不設置的話Id都是-1
  80. iv.setId(mImageIds[position]);
  81. iv.setLayoutParams(new Gallery.LayoutParams(120, 160));
  82. iv.setScaleType(ImageView.ScaleType.FIT_XY);
  83. iv.setBackgroundResource(mGalleryItemBackground);
  84. return iv;
  85. }
  86. }
  87. }
至此,完成以上功能。 總結: 1、定義Gallery 2、在res/values下 自定義attrs.xml文件 我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。我們點擊某一張圖片,會把該子元素的圖片顯示在放在後面一層的ImageView組件中。

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved