Gallery練習(android)

來源:互聯網
上載者:User

Gallery 是顯示圖片用的,需要指定一個圖片的來源 adapter ,這個繼承自 BaseAdapter ,具體代碼如下

xml 代碼

<?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="fill_parent" 
    >
    
    
</Gallery>

 

java 代碼

package zziss.android.gallerytest;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Gallery;

public class GalleryTestActivity extends Activity {
    /** Called when the activity is first created. */
    private ImageAdapter2 ia;
    private Gallery      iGallery;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        iGallery = (Gallery)this.findViewById(R.id.gallery);
        try {
            ia = new ImageAdapter2(this);
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        iGallery.setBackgroundResource(R.drawable.aa);
        iGallery.setAdapter(ia);
        
        iGallery.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                AlertDialog dlg = new AlertDialog.Builder(GalleryTestActivity.this)
                .setTitle("Gallery 測試")
                .setMessage("點擊了"+Integer.toString(arg2)+"圖片")
                //.setIcon(ia.mImageIds[arg2])
                .setPositiveButton("確定", null)
                .create();
                dlg.setCanceledOnTouchOutside(false);
                dlg.show();
                
                
            }
            
        });
    }
}

 

 

ImageAdapter代碼

package zziss.android.gallerytest;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {
    
    private Context context;
    public Integer[] mImageIds=
        {
            R.drawable.phone,
            R.drawable.tetris,
            R.drawable.tetromino,
            R.drawable.text,
            R.drawable.videos
        };
    
    
    
    public ImageAdapter(Context context) {

        this.context = context;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mImageIds.length;
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ImageView iv = new ImageView(context);
        iv.setImageResource(mImageIds[position]);
        iv.setLayoutParams(new Gallery.LayoutParams(60,60));
        iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
        return iv;
    }

}

ImageAdater2代碼

這個是從 drawable 中擷取的所有圖片,不需要編碼指定圖片資源

 

package zziss.android.gallerytest;
import java.lang.reflect.Field;
import java.util.ArrayList;

import zziss.android.gallerytest.R;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class ImageAdapter2 extends BaseAdapter {

    private ArrayList<Integer> imgList;
    private ArrayList<Object> sizeList;
    private Context context;
    public ImageAdapter2(Context context) throws IllegalArgumentException, IllegalAccessException
    {
        this.context = context;
        imgList = new ArrayList<Integer>();
        sizeList = new ArrayList<Object>();
        Field[] fields=R.drawable.class.getDeclaredFields();
        for(Field field:fields)
        {
            if (!("icon".equals(field.getClass())))
            {
                int index = field.getInt(R.drawable.class);
                imgList.add(index);
                
                int size[]=new int[2];
                Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), index);
                size[0] = bitmap.getWidth();
                size[1] = bitmap.getHeight();
                sizeList.add(size);
                bitmap=null;
            }
        }
    }
    
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return imgList.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ImageView iv = new ImageView(context);
        iv.setImageResource(imgList.get(position).intValue());
        iv.setScaleType(ImageView.ScaleType.FIT_XY);
        int size[] = new int[2];
        size = (int[])sizeList.get(position);
        iv.setLayoutParams(new Gallery.LayoutParams(size[0],size[1]));
        return iv;
    }

}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.