安卓控件使用系列24:Gallery画廊控件的使用方法

来源:互联网 发布:淘宝充值软件利润 编辑:程序博客网 时间:2024/05/22 12:13

在安卓中有一些应用程序需要循环滑动查看一系列图片的效果,就像一个画廊一样,下面我们来一起分享一下它的使用方法。

这个例子实现的是水平循环滑动查看一系列图片的效果。

整体思路:在xml文件中添加一个Gallery控件,在values文件目录中定义一个attrs.xml文件,写入相应的属性,在活动中定义一个图片数组,定义一个计数器,定义一个图片适配器类继承BaseAdapter,并重写里面的方法,在这个适配器类的构造函数中读取attrs.xml文件中的属性并设置计数器,在getCount方法中返回整数最大值,在getItem方法中返回图片数组中相应索引的图片,在getItemId方法中返回图片数组中图片的索引,在getView方法中定义一个ImagView对象,设置图片的来源、滑动的方式、每个图片的大小并用计数器设置图片,然后返回这个对象。

activity_main.xml文件:

<LinearLayout     android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    >    <Gallery         android:id="@+id/gallery"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginTop="50dp"        /></LinearLayout>

MainActivity.java文件:

    private Gallery gallery;    private ImageAdapter imageAdapter;//  声明图片数组(int类型的数组来指向图片)    private int[] resIds={    R.drawable.new1,R.drawable.new2,R.drawable.new3,    R.drawable.new4,R.drawable.new5,R.drawable.new6,    R.drawable.new7,R.drawable.new8,R.drawable.new9    };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);gallery=(Gallery)findViewById(R.id.gallery);imageAdapter=new ImageAdapter(this);gallery.setAdapter(imageAdapter);//对画廊控件设置适配器}//图片适配器public class ImageAdapter extends BaseAdapter{//用于遍历图片数组        private Context context;        int mGralleyItemBackground;//使用简单的计数器,填充背景图片        public ImageAdapter(Context context){        this.context=context;        //读取属性        TypedArray typedArray=obtainStyledAttributes(R.styleable.Gallery);        mGralleyItemBackground=typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0);                }@Overridepublic int getCount() {// TODO Auto-generated method stubreturn Integer.MAX_VALUE;}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn resIds[position];}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {//自定义的适配器,需要用自定义的布局来显示,通常android的通用布局是不能满足我们的需求            //可以手工创建一个view视图,也可以inflate填充一个xml//从数据中根据position获得每一个item的值,填充到指定的xml文件//View convertView是一个旧的布局,如果没有新的布局填充的时候,将使用旧的布局 //当前的布局会被追加到父布局中ImageView imageview=new ImageView(context);imageview.setImageResource(resIds[position%resIds.length]);//设置图片的来源imageview.setScaleType(ImageView.ScaleType.FIT_XY);//设置滑动的方式imageview.setLayoutParams(new Gallery.LayoutParams(300,230));//设置每个图片的大小imageview.setBackgroundResource(mGralleyItemBackground);//用计数器来设置图片return imageview;}}


0 0
原创粉丝点击