2010.06.05日志:Android Gallery左右循环旋转方法

如图:

2

先在attr.xml里写个Gallery的样式

1:  <?xml version="1.0" encoding="utf-8"?>
2:  <resources>
3:      <declare-styleable name="Gallery">
4:          <attr name="android:galleryItemBackground" />
5:      </declare-styleable>
6:      <!-- 定义Layout外部resources 的xml文件,用来改变Layout的背景图 -->
7:  </resources>
8:  

然后在mainActivity里的OnCreate里:

1:  setContentView(R.layout.main);
2:  
3:          imageAdapter = new myImageAdapter(this);
4:  
5:          gallery = (Gallery) findViewById(R.id.Gallery_preView);
6:          imageView = (ImageView) findViewById(R.id.ImageView_photo);
7:  
8:          gallery.setAdapter(imageAdapter);
9:          gallery.setSelection(200);//设置Gallery的起始位置

下面是imageAdapter的类,它继承BaseAdapter

图片资源:

1:  protected int[] myImageIds = { R.drawable.vista_1, R.drawable.vista_2,
2:              R.drawable.vista_3, R.drawable.vista_4, R.drawable.vista_5,
3:              R.drawable.vista_6, };

构造里:

 1:  public myImageAdapter(Context context) {
 2:          mContext = context;
 3:          /* 使用res/values/attr.xml中的<declare-styleable>定义的Gallery属性 */
 4:          TypedArray typed_array = context
 5:                  .obtainStyledAttributes(R.styleable.Gallery);
 6:          mGalleryItemBackground = typed_array.getResourceId(
 7:                  R.styleable.Gallery_android_galleryItemBackground, 0);
 8:          /* 让对象的styleable 属性能够反复使用 */
 9:          typed_array.recycle();
10:      }
11:  

getCount()方法:

1:  @Override
2:      public int getCount() {
3:          // TODO Auto-generated method stub
4:          // return myImageIds.length;
5:          return Integer.MAX_VALUE;
6:      }

getView()方法:

 1:  @Override
 2:      public View getView(int position, View convertView, ViewGroup parent) {
 3:          ImageView i = new ImageView(mContext);
 4:          
 5:          if (position < 0) {
 6:              position = position + myImageIds.length;
 7:          }
 8:          i.setImageResource(myImageIds[position % myImageIds.length]);
 9:          i.setScaleType(ImageView.ScaleType.FIT_XY);
10:          i.setLayoutParams(new Gallery.LayoutParams(128, 128));
11:          i.setBackgroundResource(mGalleryItemBackground);
12:          return i;
13:      }

你可能感兴趣的:(android)