Android控件之Gallery兑现图片列表
Android控件之Gallery实现图片列表
先来看下运行效果:

费话不多说,直接看代码...........
values/attrs.xml:
layout/img.xml:
ImageAdapter.java:
ImgActivity.java:
再放几张136*88的图片就可以了
先来看下运行效果:
费话不多说,直接看代码...........
values/attrs.xml:
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="Gallery"> <attr name="android:galleryItemBackground" /> </declare-styleable> </resources>
layout/img.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Gallery android:id="@+id/galley" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_x="12px" android:layout_y="106px" /> <ImageView android:id="@+id/image" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
ImageAdapter.java:
import java.util.List; import org.mdx.R; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; /** * * <p> * Title: ImageAdapter.java * </p> * <p> * E-Mail: 176291935@qq.com * </p> * <p> * QQ: 176291935 * </p> * <p> * Http: iaiai.iteye.com * </p> * <p> * Create time: 2011-7-18 * </p> * * @author 丸子 * @version 0.0.1 */ public class ImageAdapter extends BaseAdapter { int mGalleryItemBacjground; private Context mContext; private List<Integer> list; public ImageAdapter(Context c, List<Integer> li) { mContext = c; list = li; TypedArray a = c.obtainStyledAttributes(R.styleable.Gallery); mGalleryItemBacjground = a.getResourceId( R.styleable.Gallery_android_galleryItemBackground, 0); a.recycle(); } public int getCount() { return list.size(); } public Object getItem(int position) { return list.get(position%list.size()).intValue(); } public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } public View getView(int position, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub ImageView i = new ImageView(mContext); Bitmap bm = BitmapFactory.decodeResource(mContext.getResources(), list .get(position%list.size()).intValue()); i.setImageBitmap(bm); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setLayoutParams(new Gallery.LayoutParams(136, 88)); i.setBackgroundResource(mGalleryItemBacjground); return i; } }
ImgActivity.java:
import java.util.ArrayList; import java.util.List; import org.mdx.R; import org.mdx.core.activity.adapter.ImageAdapter; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Gallery; import android.widget.ImageView; /** * * <p> * Title: ImgActivity.java * </p> * <p> * E-Mail: 176291935@qq.com * </p> * <p> * QQ: 176291935 * </p> * <p> * Http: iaiai.iteye.com * </p> * <p> * Create time: 2011-7-18 * </p> * * @author 丸子 * @version 0.0.1 */ public class ImgActivity extends Activity { private ImageView imageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.img); imageView = (ImageView) findViewById(R.id.image); final Gallery g = (Gallery) findViewById(R.id.galley); final ImageAdapter imageAdapter = new ImageAdapter(this, getImages()); g.setAdapter(imageAdapter); g.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { imageView.setImageResource(((Integer) imageAdapter .getItem(position)).intValue()); } }); g.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { imageView.setImageResource(((Integer) imageAdapter .getItem(position)).intValue()); } public void onNothingSelected(AdapterView<?> parent) { imageView.setImageResource(((Integer) imageAdapter.getItem(g .getSelectedItemPosition())).intValue()); } }); } private List<Integer> getImages() { List<Integer> list = new ArrayList<Integer>(); list.add(new Integer(R.drawable.a)); list.add(new Integer(R.drawable.b)); list.add(new Integer(R.drawable.c)); list.add(new Integer(R.drawable.d)); list.add(new Integer(R.drawable.e)); list.add(new Integer(R.drawable.f)); list.add(new Integer(R.drawable.g)); return list; } }
再放几张136*88的图片就可以了