Spinner与Gallery

一 Spinner

显示的是一个垂直的列表选择框,继承于AbsSpinner。

1 基本用法

布局:
<Spinner
             android:entries="@array/books"
             android:prompt="@string/tip"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"/>
         <Spinner
             android:id="@+id/spinner"
             android:prompt="@string/tip"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"/>
使用:
 Spinner spinner = (Spinner) findViewById(R.id.spinner);
        String[] strings = {"猪八戒","孙悟空","唐僧"};
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.item_spinner,strings);
        spinner.setAdapter(arrayAdapter);
效果:
Spinner与Gallery

二Gallery

  Gallery是画廊视图,显示的是一个水平的列表选择框,也继承于AbsSpinner。

1 基本用法

布局:
<!--非关键代码已省略-->
         <ImageView
             android:id="@+id/imgVIew"
             android:layout_gravity="center"
             android:layout_width="300dp"
             android:layout_height="300dp" />
         <Gallery
             android:id="@+id/gallery"
             android:layout_marginTop="10dp"
             android:padding="10dp"
             android:gravity="center"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:unselectedAlpha="0.6"/>
Adapter:
public class GalleryAdapter extends BaseAdapter {

    private int[] imgIds;
    private Context context;

    public GalleryAdapter(Context context,int[] imgIds) {
        this.imgIds = imgIds;
        this.context  = context;
    }

    @Override
    public int getCount() {
        return imgIds == null ? 0 : imgIds.length;
    }

    @Override
    public Object getItem(int position) {
        return imgIds[position];
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolde holde = null;
        if (convertView == null){
            convertView = LayoutInflater.from(context).inflate(R.layout.item_gallery,parent,false);
            holde = new ViewHolde();
            holde.imageView = (ImageView) convertView.findViewById(R.id.item_img);
            convertView.setTag(holde);
        }else {
            holde = (ViewHolde) convertView.getTag();
        }
        holde.imageView.setImageResource(imgIds[position]);
        return convertView;
    }


    static class ViewHolde{
        public ImageView imageView;
    }
}
item的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/item_img"
        android:layout_marginRight="10dp"
        android:layout_width="100dp"
        android:layout_height="100dp" />
</LinearLayout>
使用:
Gallery gallery  = (Gallery) findViewById(R.id.gallery);
        //设置动画时间
        gallery.setAnimationDuration(5000);
        //设置未选中图片的透明度
        gallery.setUnselectedAlpha(0.6f);
        final ImageView imgVIew  = (ImageView) findViewById(R.id.imgVIew);
        imgVIew.setImageResource(R.mipmap.ic_launcher);
        imgVIew.setScaleType(ImageView.ScaleType.FIT_XY);
        //图片资源
        final int[] imgIds = {R.mipmap.pic_1,R.mipmap.pic_2,R.mipmap.pic_3,R.mipmap.pic_4,R.mipmap.pic_5};
        GalleryAdapter adapter  = new GalleryAdapter(this,imgIds);
        gallery.setAdapter(adapter);

        gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                imgVIew.setImageResource(imgIds[position]);
            }
        });
效果:
Spinner与Gallery


完整示例源码点击查看。