Android开发学习笔记 Gallery和GridView浅析(2)
首先介绍Gallery单独使用的例子: MainActivity.java package com.android.gallerydemo; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.vie
首先介绍Gallery单独使用的例子:
MainActivity.java
package com.android.gallerydemo;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Gallery gallery;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gallery = (Gallery)findViewById(R.id.gallery);
//设置图片适配器
gallery.setAdapter(new ImageAdapter(this));
//设置监听器
gallery.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?>parent, View v, int position, long id) {
Toast.makeText(MainActivity.this, "点击了第"+(position+1)+"张图片", Toast.LENGTH_LONG).show();
}
});
}
}
class ImageAdapter extends BaseAdapter{
//声明Context
private Context context;
//图片源数组
private Integer[] imageInteger={
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3,
R.drawable.pic4,
R.drawable.pic5,
R.drawable.pic6,
R.drawable.pic7
};
//声明 ImageAdapter
public ImageAdapter(Context c){
context = c;
}
@Override
//获取图片的个数
public int getCount() {
return imageInteger.length;
}
@Override
//获取图片在库中的位置
public Object getItem(int position) {
return position;
}
@Override
//获取图片在库中的位置
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(context);
//给ImageView设置资源
imageView.setImageResource(imageInteger[position]);
//设置比例类型
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
//设置布局 图片128x192显示
imageView.setLayoutParams(new Gallery.LayoutParams(128, 192));
return imageView;
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?> <Gallery xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gallery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:background="?android:galleryItemBackground" />
效果图:

Gallery和ImageSwitcher组件结合使用的例子:
MainActivity.java
package com.android.gallerytest;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Gallery.LayoutParams;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity implements OnItemSelectedListener,
ViewFactory {
private ImageSwitcher mSwitcher;
//大图片对应的缩略图源数组
private Integer[] mThumbIds = { R.drawable.sample_thumb_0,
R.drawable.sample_thumb_1, R.drawable.sample_thumb_2,
R.drawable.sample_thumb_3, R.drawable.sample_thumb_4,
R.drawable.sample_thumb_5, R.drawable.sample_thumb_6,
R.drawable.sample_thumb_7 };
//大图片源数组
private Integer[] mImageIds = { 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 };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置窗口无标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
//注意在使用一个ImageSwitcher之前,
//一定要调用setFactory方法,要不setImageResource这个方法会报空指针异常。
mSwitcher.setFactory(this);
//设置动画效果
mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));
Gallery g = (Gallery) findViewById(R.id.gallery);
//添加OnItemSelectedListener监听器
g.setAdapter(new ImageAdapter(this));
g.setOnItemSelectedListener(this);
}
//创建内部类ImageAdapter
public class ImageAdapter extends BaseAdapter {
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView i = new ImageView(mContext);
i.setImageResource(mThumbIds[position]);
//设置边界对齐
i.setAdjustViewBounds(true);
//设置布局参数
i.setLayoutParams(new Gallery.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
//设置背景资源
i.setBackgroundResource(R.drawable.picture_frame);
return i;
}
private Context mContext;
}
@Override
//实现onItemSelected()方法,更换图片
public void onItemSelected(AdapterView<?> adapter, View v, int position,
long id) {
//设置图片资源
mSwitcher.setImageResource(mImageIds[position]);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
@Override
//实现makeView()方法,为ImageView设置布局格式
public View makeView() {
ImageView i = new ImageView(this);
//设置背景颜色
i.setBackgroundColor(0xFF000000);
//设置比例类型
i.setScaleType(ImageView.ScaleType.FIT_CENTER);
//设置布局参数
i.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
return i;
}
}
精彩图集
精彩文章





