1、新建imageswitcher.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"
android:orientation="vertical" >
<ImageSwitcher
android:id="@+id/imageswitcher"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" />
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="10px"
android:gravity="center_vertical"
android:spacing="10px" />
<!--
android:layout_alignParentBottom="true"
就是让 Gallery 位于屏幕底端, LinearLayout 不存在这个属性
-->
</RelativeLayout>
2、导入图片img1-img5到drawable-mdpi中
3、新建一个ImageAdapter.java 继承BaseAdapter
package com.xiaoku.demo.adapter;
import android.content.Context;
import android.graphics.Color;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.Gallery.LayoutParams;
import android.widget.ImageView;
import com.xiaoku.demo.R;
public class ImageAdapter extends BaseAdapter {
private Context ctx;
private int images[] ={R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,R.drawable.img5};
public ImageAdapter(Context ctx){
this.ctx = ctx;
}
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int position) {
return images[position];
}
@Override
public long getItemId(int position) {
return images[position];
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView iv;
iv = (ImageView) convertView;
if(iv==null){
iv = new ImageView(ctx);
}
iv.setImageResource(images[position]);
iv.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
LayoutParams layoutParams = new LayoutParams(60, 60);
iv.setLayoutParams(layoutParams);
iv.setBackgroundColor(Color.LTGRAY);
return iv;
}
}
4、创建ImageSwitcherActivity,继承Activity,实现OnItemSelectedListener, ViewFactory
package com.xiaoku.demo;
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;
import com.xiaoku.demo.adapter.ImageAdapter;
public class ImageSwitcherActivity extends Activity implements
OnItemSelectedListener, ViewFactory {
private Gallery gallery;
private ImageSwitcher imageswitcher;
private ImageAdapter adapter;
private DisplayMetrics dm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏标题
int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN;// 全屏
this.getWindow().setFlags(flag, flag);
setContentView(R.layout.imageswitcher);
// 得到屏幕尺寸
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
gallery = (Gallery) this.findViewById(R.id.gallery);
imageswitcher = (ImageSwitcher) this.findViewById(R.id.imageswitcher);
// 下面这句必须要,不然会使 setImageSource 这个方法指向空指针
imageswitcher.setFactory(this);
adapter = new ImageAdapter(this);
gallery.setAdapter(adapter);
gallery.setOnItemSelectedListener(this);
}
@Override
public View makeView() {
ImageView iv = new ImageView(this);
// 设置背景颜色
iv.setBackgroundColor(0xFF646464);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setLayoutParams(new ImageSwitcher.LayoutParams(
LayoutParams.FILL_PARENT, dm.heightPixels - 70));
/* 上面语句中 -70 的目的是应为, ImageSwitcher 下面要显示 Gallery ,我们在 ImageAdapter 中设定了
view.setLayoutParams(new Gallery.LayoutParams(60, 60));
即高度是 60pixels ,在加在 main.xml 中 Gallery 有下面这样的属性:
android:layout_marginTop="10px"
因此加起来一共刚好是 70px*/
return iv;
}
// 点击gallery图片事件
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
int imageID = (int) adapter.getItemId(position);
imageswitcher.setImageResource(imageID);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
imageswitcher.setImageResource((int) adapter.getItemId(0));// 显示第一张
}
}
上面用到的gallery,现在已经废弃了,推荐使用新的HorizontalScrollView
参考文章:http://blog.csdn.net/pathuang68/article/details/6541823
http://blog.csdn.net/dazlly/article/details/7863923