歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android應用開發之電子相冊

Android應用開發之電子相冊

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

在iphone手機上用手指拖動圖片移動,這功能很Cool,咱Android也不能含糊,用Gallery類就可以實現這個功能。

今天我就做了個小小的電子相冊:

假設你已經新建好了項目。

首先我們事先准備好的圖片存放在drawable文件夾下,然後新建一個接口:

  1. public interface ImageResource {
  2. //用一個Integer數組保存圖像資源
  3. Integer[] dImageID = {
  4. R.drawable.sample_0,
  5. R.drawable.sample_1,
  6. R.drawable.sample_2,
  7. R.drawable.sample_3,
  8. R.drawable.sample_4,
  9. R.drawable.sample_5,
  10. R.drawable.sample_6,
  11. R.drawable.sample_7,
  12. };
  13. }

這個接口裡有一個int型的數組保存了咱drawable下的圖片,這樣方便以後修改。

要用Gallery實現這個功能,先要有一個容器來存放Gallery要顯示的圖片,我使用的是一個繼承自BaseAdapter的ImageAdapter。這個電子相冊分兩部分,上部分是用戶可以拖動圖像列表,下部分是用戶選中上面圖像後更大的顯示出來。看圖:

負責上部分顯示的ImageView是imageAll,負責下部分顯示的是imageOne,代碼如下:

  1. import android.app.Activity;
  2. import android.content.Context;
  3. import android.content.res.TypedArray;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.BaseAdapter;
  8. import android.widget.ImageView;
  9. import android.widget.Gallery;
  10. public class HelloGallery extends Activity {
  11. //這個ImageView是用來顯示單個圖像
  12. private ImageView imageOne;
  13. //這個ImageView是用來顯示所有圖像
  14. private ImageView imageAll;
  15. @Override
  16. public void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.main);
  19. imageOne = (ImageView)findViewById(R.id.imageView);
  20. //新建一個Gallery類,這是是實現拖動效果的關鍵
  21. //Gallery is 一個用來水平卷動顯示對象的視圖
  22. Gallery gallery = (Gallery)findViewById(R.id.gallery);
  23. //ImageAdapter就是gallery要顯示的對象
  24. gallery.setAdapter(new ImageAdapter(this));
  25. }
  26. //實現ImageResource接口獲得我自己創建的圖像資源
  27. class ImageAdapter extends BaseAdapter implements ImageResource{
  28. //每一個gallery中圖像的背景資源
  29. private int galleryItemBackground;
  30. private Context context;
  31. public ImageAdapter(Context context) {
  32. this.context = context;
  33. //這裡實現的功能就是上半部分每個圖像的那個背景框
  34. //對應的xml文件就是attr.xml
  35. TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
  36. galleryItemBackground = a.getResourceId(
  37. R.styleable.Gallery1_android_galleryItemBackground, 0);
  38. a.recycle();
  39. }
  40. public int getCount() {
  41. return dImageID.length;
  42. }
  43. public Object getItem(int position) {
  44. return position;
  45. }
  46. //這個方法獲得是呈現在用戶面前的圖像下標
  47. public long getItemId(int position) {
  48. //將此索引的圖像設為imageOne顯示 imageOne.setImageResource(ImageAdapter.dImageID[position]);
  49. imageOne.setScaleType(ImageView.ScaleType.FIT_CENTER);
  50. return position;
  51. }
  52. //這個方法返回的ImageView就是實現拖動效果的圖像
  53. public View getView(int position, View convertView, ViewGroup parent) {
  54. imageAll= new ImageView(context);
  55. //設置圖像資源
  56. imageAll.setImageResource(dImageID[position]);
  57. //設置imageAll視圖為120×120
  58. imageAll.setLayoutParams(new Gallery.LayoutParams(120,120));
  59. //設置圖像相對於視圖的比例,FIT_XY表示充滿X和Y軸
  60. imageAll.setScaleType(ImageView.ScaleType.FIT_XY);
  61. //設置imageAll中每一個Item的背景資源
  62. imageAll.setBackgroundResource(galleryItemBackground);
  63. return imageAll;
  64. }
  65. }
  66. }
Copyright © Linux教程網 All Rights Reserved