画廊控件Gallery的使用

画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动。Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最后一个图片为止。

  下面我们就通过一个实例来演示如何实现Gallery画廊控件功能。

1.xml布局

  在xml布局文件中,我们使用LinearLayout对整个界面进行垂直布局。在界面上端设置一个ImageView控件,用来显示当前选中的Gallery列表图片。在界面下端设置一个Gallery控件,用来显示Gallery列表图片。整个布局文件很简单,具体源码如下:

复制代码
 1 <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:orientation="vertical"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent" >
 6 
 7     <ImageView
 8         android:id="@+id/imageView"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"    >
11     </ImageView>
12     
13     <Gallery
14         android:id="@+id/gallery"
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:spacing="2dp"
18         android:layout_marginTop="5dp"    >
19     </Gallery>
20     
21 </LinearLayout>
复制代码

  其中,在Gallery属性标签中,android:spacing="2dp"属性用于指定Gallery列表图片之间的间隔为2dp。

  程序运行后的效果如图1所示。

图1 主界面

 

2.ImageAdapter适配器

  要实现Gallery画廊控件功能,需要一个容器来存放Gallery显示的图片。我们可以使用一个继承自BaseAdapter类的派生类ImageAdapter来装这些图片。

  在ImageAdapter类中我们需要实现Adapter类中的如下四个抽象方法:

  (1)public int getCount();

  (2)public Object getItem(int position);

  (3)public long getItemId(int position);

  (4)public View getView(int position, View convertView, ViewGroup parent);

  其中,getCount()方法用于获取ImageAdapter适配器中图片个数;getItem()方法用于获取图片在ImageAdapter适配器中的位置;getItemId()方法用于获取图片在ImageAdapter适配器中位置;getView()用于获取ImageAdapter适配器中指定位置的视图对象。上述四个抽象方法的具体实现方法如下:

复制代码
 1   /*
 2      * Function   :    ImageAdapter类,继承自BaseAdapter
 3      * Author     :    博客园-依旧淡然
 4      */
 5     public class ImageAdapter extends BaseAdapter {
 6 
 7         Context mContext;        //上下文对象
 8         
 9         //构造方法
10         public ImageAdapter(Context context) {
11             this.mContext = context;
12         }
13         
14         //获取图片的个数
15         public int getCount() {
16             return mImageResourceIds.length;
17         }
18 
19         //获取图片在库中的位置
20         public Object getItem(int position) {
21             return mImageResourceIds[position];
22         }
23 
24         //获取图片在库中的位置
25         public long getItemId(int position) {
26             return position;
27         }
28 
29         //获取适配器中指定位置的视图对象
30         public View getView(int position, View convertView, ViewGroup parent) {
31             ImageView imageView = new ImageView(mContext);
32             imageView.setImageResource(mImageResourceIds[position]);
33             imageView.setLayoutParams(new Gallery.LayoutParams(120, 120));
34             imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
35             return imageView;
36         }
37         
38     }
复制代码

  其中,imageView.setImageResource(mImageResourceIds[position])用于将ImageAdapter中的指定位置图片资源加载到imageView中。imageView.setLayoutParams(new Gallery.LayoutParams(120, 120))用于设置Gallery中图片的显示大小。imageView.setScaleType(ImageView.ScaleType.FIT_CENTER)用于设置imageView中图片的缩放显示格式。

 

3.加载适配器

  实现了ImageAdapter类之后,我们可以通过setAdapter()方法把资源文件添加到Gallery中进行显示即可。

 

4.Gallery事件监听器

  除此之外,为了在如图1所示的界面上端的ImageView控件中同步显示Gallery控件中的当前图片。还需要对Gallery控件进行事件监听,以便获知用户选中了Gallery控件中的哪一张图片。具体的实现方法如下:

1   mGallery.setOnItemClickListener(new OnItemClickListener() {
2       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
3             mImageView.setBackgroundResource(mImageResourceIds[arg2]);
4        }
5    });

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package e gallery; import android app Activity; import android os Bundle; import android view LayoutInflater; import android view View; import android view ViewGroup; import android view ViewGroup MarginLayoutParams; import android widget AdapterView; import android widget AdapterView OnItemSelectedListener; import android widget BaseAdapter; import android widget Gallery; import android widget ImageView; import e gallery R; public class MainActivity extends Activity implements OnItemSelectedListener { Gallery gallery; ImageView main imageView; ImageView picture imageView; Gesture+ gesture; int[] ids1 { R drawable b R drawable c R drawable d R drawable f R drawable g }; @Override protected void onCreate Bundle savedInstanceState { super onCreate savedInstanceState ; setContentView R layout main ; main imageView ImageView findViewById R id main imageView ; gallery Gallery findViewById R id gallery ; gallery setOnItemSelectedListener this ; 怎么设置从中间开始 gallery setAdapter new MyAdapter ; } class MyAdapter extends BaseAdapter{ @Override public int getCount { return Integer MAX VALUE; } @Override public Object getItem int position { return null; } @Override public long getItemId int position { return 0; } @Override public View getView int position View convertView ViewGroup parent { LayoutInflater layoutInflater LayoutInflater from MainActivity this ; convertView layoutInflater inflate R layout picture null ; picture imageView ImageView convertView findViewById R id picture imageView ; picture imageView setImageResource ids1[position % 5] ; return convertView; } } @Override public void onItemSelected AdapterView< > parent View view int position long id { main imageView setImageResource ids1[position % 5] ; } @Override public void onNothingSelected AdapterView< > parent { } }">package e gallery; import android app Activity; import android os Bundle; import android view LayoutInflater; import android view View; import android view ViewGroup; import android view ViewGroup MarginLayoutParams; import android widget AdapterView; import android widget AdapterView OnItemSelecte [更多]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值