您的位置:首页 > 其它

Hello, Views(一)Gallery滑动的图片(附源码下载)

2013-12-16 14:51 267 查看
(本文根据官方tutorials翻译而来)
前言
通过官方案例学习,是最直接的方法。结合书本在此介绍一下gallery的运用。
效果



涉及到的类
· BaseAdapter
· Gallery
· ImageView
· 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了。
源码下载
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: