GalleyView

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

1)Android XML文件

Java代码:

                
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <Galleryxmlns: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. publicclassChapter7Test8extendsActivity{
  2. @Override
  3. protectedvoidonCreate(BundlesavedInstanceState){
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.chapter_7_test8);
  6. //步骤1:和之前学习的一样,设置adapter来描述item的内容以及设置item的格式;通过setOnItemClickListener()设置点击触发的操作。
  7. Gallerygallery=(Gallery)findViewById(R.id.gallery);
  8. gallery.setAdapter(newImageAdapter(this));
  9. gallery.setOnItemClickListener(newOnItemClickListener(){
  10. publicvoidonItemClick(AdapterView<?>parent,Viewv,intposition,longid){
  11. Toast.makeText(Chapter7Test8.this,""+position,Toast.LENGTH_SHORT).show();
  12. }
  13. });
  14. }
  15. //步骤2:adapter继承BaseAdapter,具体描述item。需要创建构造函数,具体化getCount(),getItem(),getItemId(),getView()。
  16. privateclassImageAdapterextendsBaseAdapter{
  17. privateContextmContext;
  18. privateInteger[]mImageIds={R.drawable.sample_1,R.drawable.sample_2,R.drawable.sample_3,
  19. R.drawable.sample_4,R.drawable.sample_5,R.drawable.sample_6,
  20. R.drawable.sample_7};//我们将名称为drawable_sample_1的图片文件,拷贝到drawable/下面。
  21. publicImageAdapter(Contextcontext){
  22. mContext=context;
  23. }
  24. publicintgetCount(){
  25. returnmImageIds.length;
  26. }
  27. publicObjectgetItem(intposition){
  28. returnposition;
  29. }
  30. publiclonggetItemId(intposition){
  31. returnposition;
  32. }
  33. //步骤3:每个item都是ImageView,通过setImageResource将图片呈现,设置每个item的大小,以及显示比例,这里,我们采用FIT_XY,根据X:Y将整个图片显示出来,如果X:Y和图片长:宽不一样,图片可能有些变形。
  34. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  35. ImageViewimage=newImageView(mContext);
  36. image.setImageResource(mImageIds[position]);
  37. image.setLayoutParams(newGallery.LayoutParams(150,100));
  38. image.setScaleType(ImageView.ScaleType.FIT_XY);
  39. returnimage;
  40. }
  41. }
  42. }
  43. 3)通过xml文件对item的格式进行设置
  44. 我们在res/values/下面增加一个xml文件,用于描述自定义widget的属性格式为
  45. Java代码:
  46. <resources>
  47. <declare-styleablename="XXXX">
  48. <attrname="AAAAA"format="BBBB"/>
  49. <attrname="aaaaa"format="bbbb"/>
  50. </declare-styleable>
  51. </resources>

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

Java代码:

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

获得自定义属性方式:

Java代码:

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

在这个例子中:

Java代码:

                
  1. publicImageAdapter(Contextcontext){
  2. TypedArraya=obtainStyledAttributes(R.styleable.HelloGallery);
  3. mGalleryItemBackground=a.getResourceId(R.styleable.HelloGallery_android_galleryItemBackground,0);
  4. a.recycle();
  5. }
  6. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  7. image.setBackgroundResource(mGalleryItemBackground);
  8. }

更多相关文章

  1. Android 控件之ImageSwitcher图片切换器
  2. Android编程心得-图片自适应心得
  3. 关于android中线性布局的layout_gravity属性
  4. Android 使用Canvas在图片上绘制文字的方法
  5. Android 自定义标签属性设置及使用
  6. android:exported 属性分析

随机推荐

  1. Android(安卓)调用前置摄像头
  2. Android之Http通信——1.初识Http协议
  3. 【Android】Android中用代码复制文件的大
  4. Android(安卓)文件IO操作
  5. Android(安卓)Studio 导入第三方库
  6. Android实现推送消息的解决方案
  7. 关于android 百度地图离线包的调用问题
  8. 【Android车载系统 News | Tech 1】News
  9. android studio 的自动添加依赖过程简介(
  10. 使用HttpURLConnection实现在android客户