当前位置: 代码迷 >> Android >> Android控件之Gallery兑现图片列表
  详细解决方案

Android控件之Gallery兑现图片列表

热度:78   发布时间:2016-05-01 17:15:44.0
Android控件之Gallery实现图片列表
先来看下运行效果:


费话不多说,直接看代码...........


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: [email protected] * </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: [email protected] * </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的图片就可以了
  相关解决方案