android Gallery控件与BaseAdapter适配器

GalleyView 
 
Galley是画廊的意思,一般只在图片显示中使用,而且也不常用。

1)Android XML文件

Java代码:

   
   
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <Gallery xmlns:android="http://schemas.android.com/apk/res/android" 
  3. android:id="@+id/gallery" 
  4. android:layout_width="fill_parent" 
  5. android:layout_height="wrap_content"> 
  6. </Gallery> 

由于Galley用户处理图片,因此处理item可采用ImageView,在设置adapter中,我们可以参见《Android 学习笔记(十三):Activity-GridView 》中对BaseAdapter进行继承。

2)Java源代码

Java代码:

   
   
  1. public class Chapter7Test8 extends Activity {  
  2. @Override   
  3. protected void onCreate(Bundle savedInstanceState) {  
  4. super.onCreate(savedInstanceState);  
  5. setContentView(R.layout.chapter_7_test8);   
  6. //步骤1:和之前学习的一样,设置adapter来描述item的内容以及设置item的格式;通过setOnItemClickListener()设置点击触发的操作。   
  7. Gallery gallery = (Gallery)findViewById(R.id.gallery);  
  8. gallery.setAdapter (new ImageAdapter (this));  
  9. gallery.setOnItemClickListener (new OnItemClickListener(){  
  10. public void onItemClick(AdapterView<?> parent,View v,int position,long id){  
  11. Toast.makeText(Chapter7Test8.this,""+position,Toast.LENGTH_SHORT).show();  
  12. }  
  13. } );  
  14. }  
  15.  
  16. //步骤2:adapter继承BaseAdapter,具体描述item。需要创建构造函数,具体化getCount(), getItem(), getItemId(), getView()。   
  17. private class ImageAdapter extends BaseAdapter{  
  18. private Context mContext;  
  19. private Integer[] mImageIds = { R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3,  
  20. R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6,  
  21. R.drawable.sample_7 }; //我们将名称为drawable_sample_1的图片文件,拷贝到drawable/下面。   
  22. public ImageAdapter(Context context){  
  23. mContext = context;  
  24. }  
  25. public int getCount() {  
  26. return mImageIds.length;  
  27. }  
  28. public Object getItem(int position) {  
  29. return position;  
  30. }  
  31. public long getItemId(int position) {  
  32. return position;  
  33. }  
  34. //步骤3:每个item都是ImageView,通过setImageResource将图片呈现,设置每个item的大小,以及显示比例,这里,我们采用FIT_XY,根据X:Y将整个图片显示出来,如果X:Y和图片长:宽不一样,图片可能有些变形。   
  35. public View getView(int position, View convertView, ViewGroup parent) {  
  36. ImageView image = new ImageView(mContext);  
  37. image.setImageResource(mImageIds[position]);  
  38. image.setLayoutParams(new Gallery.LayoutParams(150,100));  
  39. image.setScaleType(ImageView.ScaleType.FIT_XY);  
  40. return image;  
  41. }   
  42. }  
  43. }  
  44. 3)通过xml文件对item的格式进行设置   
  45. 我们在res/values/下面增加一个xml文件,用于描述自定义widget的属性格式为  
  46. Java代码:  
  47. <resources> 
  48. <declare-styleable name="XXXX"> 
  49. <attr name="AAAAA" format="BBBB" /> 
  50. <attr name="aaaaa" format="bbbb" /> 
  51. </declare-styleable> 
  52. </resources> 

在R.java中将增加int R.styleable.XXXX[]来表示此定义,如果里面有2个属性,则有两个元素。在本例,设置style的属性,我们设置一个android已定义的属性galleryItembackground,它定义一个具有一个边框的gallery的item。如下:

Java代码:

   
   
  1. <resources> 
  2. <declare-styleable name="HelloGallery"> 
  3. <attr name="android:galleryItemBackground" /> 
  4. </declare-styleable> 
  5. </resources> 

获得自定义属性方式:

Java代码:

   
   
  1. TypedArray aobtainStyledAttributes (R.styleable.XXX /*int[]*/ );  
  2. aattrId = a.getResourceId (R.styleable.XXXX_AAAA,defaultId);//获得该属性的ID, 如果没有发现该属性,则返回defaultId的值。   
  3. a.recyle (),//在使用obtainStyledAttributes()后应调用,是的可以被系统重用。  

在这个例子中:

Java代码:

   
   
  1. public ImageAdapter(Context context){  
  2. TypedArray aobtainStyledAttributes(R.styleable.HelloGallery);  
  3. mGalleryItemBackground = a.getResourceId(R.styleable.HelloGallery_android_galleryItemBackground , 0);  
  4. a.recycle();  
  5. }  
  6. public View getView(int position, View convertView, ViewGroup parent) {  
  7. image.setBackgroundResource (mGalleryItemBackground);  
  8. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值