Hello, Views(一)Gallery滑动的图片(附源码下载)
(本文根据官方tutorials翻译而来)
前言
通过官方案例学习,是最直接的方法。结合书本在此介绍一下gallery的运用。
效果
涉及到的类
· Gallery
· AdapterView.OnItemClickListener
下面是工程的结构,
新建:1)一个主activity命名为HelloGalleryActivity.java,
2)一个自定义adapter命名为GalleryAdapter用于填充Gallery
3) 在drawable里面放置使用到的图片资源
4)在values里面新建一个xml,atrrs.xml用于定义图片的边框效果
5)在mian.xml里面添加一个gallery。
代码书写:
在HelloGalleryActivity里面重写的onCreate()方法添加以下代码:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Gallery gallery = (Gallery) findViewById(R.id.gallery1);
gallery.setAdapter(new GalleryAdapter(this));
//下面的单击监听用于显示一个toast,作用是显示所单击的图片的下标
gallery.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView parent, View v, int position, long id)
{
Toast.makeText(HelloGalleryActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
}
在GalleryAdapter里面,自动生成了一些需要重写的方法:
public class GalleryAdapter extends BaseAdapter
{
//用于图片的背景边框
int mGalleryItemBackground;
//获得上下文的引用
private Context mContext;
//存放图片资源的整型数组
private Integer[] mImageIds = {
R.drawable.sample_1,
R.drawable.sample_2,
R.drawable.sample_3,
R.drawable.sample_4,
R.drawable.sample_5,
R.drawable.sample_6,
R.drawable.sample_7 };
//重写构造器,
public GalleryAdapter(Context c)
{
mContext = c;
// 设置边框样式
TypedArray a = c.obtainStyledAttributes(R.styleable.HelloGallery);
mGalleryItemBackground = a.getResourceId(
R.styleable.HelloGallery_android_galleryItemBackground, 0);
a.recycle();
}
@Override
public int getCount()
{
return mImageIds.length;
}
@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 i = new ImageView(mContext);
i.setImageResource(mImageIds[position]);
i.setLayoutParams(new Gallery.LayoutParams(150, 100));
i.setScaleType(ImageView.ScaleType.FIT_XY);
i.setBackgroundResource(mGalleryItemBackground);
return i;
}
}
完善atrrs.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="HelloGallery">
<attr name="android:galleryItemBackground" />
</declare-styleable>
</resources>
基本上这样就OK了。
作者:小文字
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.