您的位置:首页 > 移动开发 > Android开发

【Android基础入门〖13〗】Gallery

2013-11-03 09:58 344 查看
目录(?)[+]

1    在 xml 布局中添加 Gallery

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

    android:layout_width="match_parent"  

    android:layout_height="match_parent">  

    <Gallery  

        android:id="@+id/gallery"  

        android:layout_width="match_parent"  

        android:layout_height="match_parent"/>  

</LinearLayout>  

2    自定义 ImageAdapter

ImageAdapter.java

package com.example.gallery;  

import java.util.List;  

import android.content.Context;  

import android.content.res.TypedArray;  

import android.view.View;  

import android.view.ViewGroup;  

import android.widget.BaseAdapter;  

import android.widget.Gallery;  

import android.widget.ImageView;  

@SuppressWarnings("deprecation")  

public class ImageAdapter extends BaseAdapter {  

      

    private Context context;  

    private List<Integer> list;  

    private TypedArray typedArray;  

    private int item_background;  

      

    public ImageAdapter(Context context ,List<Integer> list)  

    {  

        this.context=context;  

        this.list=list;  

        this.typedArray = context.obtainStyledAttributes(R.styleable.gallery_style);  

        item_background=typedArray.getResourceId(R.styleable.gallery_style_android_galleryItemBackground, 0);  

        typedArray.recycle();  

    }  

    @Override  

    public int getCount() {  

        return list.size();  

    }  

    @Override  

    public Object getItem(int position) {  

        return position;  

    }  

    @Override  

    public long getItemId(int position) {  

        return position;  

    }  

    @Override  

    public View getView(int position, View convertView, ViewGroup parent) {  

        ImageView imageView = new ImageView(context);  

        //设置显示的图片  

        imageView.setImageResource(list.get(position));  

          

        //设置伸缩规格  

        imageView.setScaleType(ImageView.ScaleType.FIT_XY);  

          

        //设置布局参数  

        imageView.setLayoutParams(new Gallery.LayoutParams(150,100));  

          

        //设置背景边框  

        imageView.setBackgroundResource(item_background);  

          

        return imageView;  

    }  

}  

3    每个 ImageView 的背景参数

res/values/attrs.xml

<?xml version="1.0" encoding="utf-8"?>  

<resources>  

    <declare-styleable name="gallery_style">  

        <attr name="android:galleryItemBackground" />  

    </declare-styleable>  

</resources>  

4    在 MainActivity 中绑定数据与设置监听

MainActivity.java

package com.example.gallery;  

import java.util.ArrayList;  

import android.app.Activity;  

import android.os.Bundle;  

import android.view.View;  

import android.widget.AdapterView;  

import android.widget.Gallery;  

import android.widget.Toast;  

@SuppressWarnings("deprecation")  

public class MainActivity extends Activity {  

    @Override  

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.activity_main);  

        Gallery gallery=(Gallery)findViewById(R.id.gallery);  

          

        ArrayList<Integer>list=new ArrayList<Integer>();  

        list.add(R.drawable.img1);  

        list.add(R.drawable.img2);  

        list.add(R.drawable.img3);  

        list.add(R.drawable.img4);  

        list.add(R.drawable.img5);  

        list.add(R.drawable.img6);  

        list.add(R.drawable.img7);  

          

        ImageAdapter adapter=new ImageAdapter(this,list);  

        gallery.setAdapter(adapter);  

          

        gallery.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {    

            @Override    

            public void onItemSelected(AdapterView<?> parent, View v,int position, long id) {    

                Toast.makeText(getApplicationContext(), "选择了:  "+   

                               String.valueOf(position), Toast.LENGTH_SHORT).show();  

            }    

              

            @Override    

            public void onNothingSelected(AdapterView<?> arg0) {    

            //这里不做响应    

            }    

        });   

    }  

}  

5    图片资源

注:图片最好为 png 格式的图片,由于jpg是压缩后的图片,在android 中解压缩有可能导致内存溢出错误。
 


6    结果展示

 


原:http://blog.csdn.net/mkrcpp/article/details/11993163
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: