源码下载地址:http://download.csdn.net/detail/flyingsir_zw/9658434
设置
android:galleryItemBackground
后的效果
不设置的效果如下:
设置
android:galleryItemBackground
的方法如下:
1.项目目录res/values/attrs.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="HelloGallery"> <attr name="android:galleryItemBackground" /> </declare-styleable> </resources>
2.Gallery 自定义适配器中 构造方法中初始化 引用即可如下代码
public class MygalleryAdapter extends BaseAdapter { private Context mContext; private Integer[] data; private int mGalleryItemBackground; public MygalleryAdapter(Context context, Integer[] data) { this.mContext = context; this.data = data; // 获取自定义的属性值,res/values/attrs.xml TypedArray attr = mContext .obtainStyledAttributes(R.styleable.HelloGallery); mGalleryItemBackground = attr.getResourceId( R.styleable.HelloGallery_android_galleryItemBackground, 0); attr.recycle(); } }
源码下载地址:http://download.csdn.net/detail/flyingsir_zw/9658434
完整适配器代码
public class MygalleryAdapter extends BaseAdapter { private Context mContext; private Integer[] data; private int mGalleryItemBackground; public MygalleryAdapter(Context context, Integer[] data) { this.mContext = context; this.data = data; // 获取自定义的属性值,res/values/attrs.xml TypedArray attr = mContext .obtainStyledAttributes(R.styleable.HelloGallery); mGalleryItemBackground = attr.getResourceId( R.styleable.HelloGallery_android_galleryItemBackground, 0); attr.recycle(); } @Override public int getCount() { return data.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder mViewHolder; if (convertView == null) { convertView = View.inflate(mContext, R.layout.gv_list_item, null); // 创建一个绑定对象 mViewHolder = new ViewHolder(); // 初始化控件 mViewHolder.img = (ImageView) convertView.findViewById(R.id.img); mViewHolder.img.setBackgroundResource(mGalleryItemBackground); // 绑定 convertView.setTag(mViewHolder); } else { // 从绑定对戏里重新获取一个View mViewHolder = (ViewHolder) convertView.getTag(); } // 赋值 mViewHolder.img.setImageResource(data[position]); return convertView; } static class ViewHolder { ImageView img; } }
完整类代码
public class MainActivity extends Activity implements ViewFactory { private Gallery mGallery; private MygalleryAdapter mygalleryAdapter; // references to our images private Integer[] mThumbIds = null; private ImageSwitcher mImageSwitcher; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initDataSource(); // 获取控件 mGallery = (Gallery) this.findViewById(R.id.gallery); mGallery.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mImageSwitcher.setImageResource(mThumbIds[position]); } }); // 创建一个视图切换器 mImageSwitcher = (ImageSwitcher) this.findViewById(R.id.imageSwitcher); // 切换器上面不能直接显示图片 // 需要实现这个接口,然后实现makeView()创建一个控件 mImageSwitcher.setFactory(this); initAdapter(); } // 1 初始化数据源 private void initDataSource() { mThumbIds = new Integer[] { R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, 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, R.drawable.sample_0, 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 }; } private void initAdapter() { mygalleryAdapter = new MygalleryAdapter(this, mThumbIds); mGallery.setAdapter(mygalleryAdapter); mGallery.setSelection(mThumbIds.length / 2); } @Override public View makeView() { // 因为ImageSwitcher控件上面不能直接显示图片,需要创建一个可以显示图片控件 ImageView img = new ImageView(this); // 先new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT) // 最后在前面添加一个ImageSwitcher img.setLayoutParams(new ImageSwitcher.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); img.setScaleType(ImageView.ScaleType.FIT_XY); img.setImageResource(mThumbIds[mThumbIds.length / 2]); return img; } }
xml布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > <Gallery android:id="@+id/gallery" android:layout_width="fill_parent" android:layout_height="120dip" android:layout_alignParentTop="true" /> <ImageSwitcher android:id="@+id/imageSwitcher" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/gallery" /> </RelativeLayout>
gallery 适配器自布局 xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:scaleType="fitXY" android:layout_centerVertical="true"/> </RelativeLayout>
源码下载地址:http://download.csdn.net/detail/flyingsir_zw/9658434