Trung tâm Tin học – ĐH KHTN GALLERY Android có cung cấp cho ta 1 công cụ để xem ảnh (như 1 album). Công cụ này thật sự tiện ích khi các bạn lập trình các ứng dụng quản lý SmartPhone. Cho nên trong phần này mình sẽ tạo ra 1 demo nho nhỏ miêu tả cách tạo và hoạt động của Gallery như sau: Đầu tiên các bạn tạo 1 Project: Project name: GalleryTest Build Target: Android 2.3.3 Application name: GalleryTest Package name: com.dac.GalleryTest Create Activity: GalleryActivity Kế tiếp các bạo add các hình tự chọn vào folder drawable-mdpi (thuộc folder res/). Các bạn tự rename hình và điều chỉnh các tên hình trong code thì ứng dụng mới không phát sinh lỗi được. Sau đó các bạn đổi tên file main.xml thành gallery.xml và viết code như sau: <?xml version="1.0" encoding="utf-8"?> <Gallery xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gallery" android:layout_width="fill_parent" android:layout_height="wrap_content" /> Và trong file GalleryActivity.java: package com.dac.GalleryTest import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; Lập trình Android – http://laptrinhdidong.vn Page 1 Trung tâm Tin học – ĐH KHTN import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; public class GalleryActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gallery); Gallery gallery = (Gallery)findViewById(R.id.gallery); ManateeAdapter manateeAdapter = new ManateeAdapter(this); gallery.setAdapter(manateeAdapter); } public static class ManateeAdapter extends BaseAdapter { private static final String TAG = "ManateeAdapter"; private static int convertViewCounter = 0; private Context mContext; private LayoutInflater mInflater; static class ViewHolder { ImageView image; } // Các bạn tự điều chỉnh tên các hình trong phần này: private int[] manatees = { R.drawable.manatee00, R.drawable.manatee01, R.drawable.manatee02, R.drawable.manatee03, R.drawable.manatee04, R.drawable.manatee05, R.drawable.manatee06, R.drawable.manatee07, R.drawable.manatee08, R.drawable.manatee09, R.drawable.manatee10, R.drawable.manatee11, R.drawable.manatee12, R.drawable.manatee13, R.drawable.manatee14, R.drawable.manatee15, R.drawable.manatee16, R.drawable.manatee17, R.drawable.manatee18, R.drawable.manatee19, R.drawable.manatee20, R.drawable.manatee21, R.drawable.manatee22, R.drawable.manatee23, R.drawable.manatee24, R.drawable.manatee25, R.drawable.manatee26, R.drawable.manatee27, R.drawable.manatee28, R.drawable.manatee29, Lập trình Android – http://laptrinhdidong.vn Page 2 Trung tâm Tin học – ĐH KHTN R.drawable.manatee30, R.drawable.manatee31, R.drawable.manatee32, R.drawable.manatee33 }; private Bitmap[] manateeImages = new Bitmap[manatees.length]; private Bitmap[] manateeThumbs = new Bitmap[manatees.length]; public ManateeAdapter(Context context) { Log.v(TAG, "Constructing ManateeAdapter"); this.mContext = context; mInflater = LayoutInflater.from(context); for(int i=0; i<manatees.length; i++) { manateeImages[i] = BitmapFactory.decodeResource( context.getResources(), manatees[i]); manateeThumbs[i] = Bitmap.createScaledBitmap(manateeImages[i], 100, 100, false); } } public int getCount() { Log.v(TAG, "in getCount()"); return manatees.length; } public int getViewTypeCount() { Log.v(TAG, "in getViewTypeCount()"); return 1; } public int getItemViewType(int position) { Log.v(TAG, "in getItemViewType() for position " + position); return 0; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; Log.v(TAG, "in getView for position " + position + ", convertView is " + ((convertView == null)?"null":"being recycled")); if (convertView == null) { convertView = mInflater.inflate(R.layout.gridimage, null); convertViewCounter++; Log.v(TAG, convertViewCounter + " convertViews have been created"); holder = new ViewHolder(); holder.image = (ImageView) convertView.findViewById(R.id.gridImageView); Lập trình Android – http://laptrinhdidong.vn Page 3 Trung tâm Tin học – ĐH KHTN convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.image.setImageBitmap(manateeImages[position]); return convertView; } public Object getItem(int position) { Log.v(TAG, "in getItem() for position " + position); return manateeImages[position]; } public long getItemId(int position) { Log.v(TAG, "in getItemId() for position " + position); return position; } } } Và cuối cùng các bạn debug ứng dụng và có kết quả như sau (các bạn cầm chuộc kéo các tấm hình để xem các tấm ảnh kế tiếp) Lập trình Android – http://laptrinhdidong.vn Page 4 Trung tâm Tin học – ĐH KHTN Mọi ý kiến đóng góp các bạn vui lòng gữi bài viết về forum trang web www.laptrinhdidong.vn . Rất mong nhận được sự phản hồi của các bạn. Lập trình Android – http://laptrinhdidong.vn Page 5 . tả cách tạo và hoạt động của Gallery như sau: Đầu tiên các bạn tạo 1 Project: Project name: GalleryTest Build Target: Android 2.3.3 Application name: GalleryTest Package name: com.dac.GalleryTest. super.onCreate(savedInstanceState); setContentView(R.layout .gallery) ; Gallery gallery = (Gallery) findViewById(R.id .gallery) ; ManateeAdapter manateeAdapter = new ManateeAdapter(this); gallery. setAdapter(manateeAdapter); . android:id="@+id /gallery& quot; android:layout_width="fill_parent" android:layout_height="wrap_content" /> Và trong file GalleryActivity.java: package com.dac.GalleryTest import