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;
}
}
<?
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;
}
}
main.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=
"fill_parent"
>
<ImageSwitcher
android:id=
"@+id/switcher"
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent"
android:layout_alignParentTop=
"true"
android:layout_alignParentLeft=
"true"
/>
<Gallery
android:id=
"@+id/gallery"
android:background=
"#55000000"
android:layout_width=
"fill_parent"
android:layout_height=
"60dp"
android:layout_alignParentBottom=
"true"
android:layout_alignParentLeft=
"true"
android:gravity=
"center_vertical"
android:spacing=
"16dp"
/>
</RelativeLayout>
效果图: