ImageSwitcher gallery 实现图片展示

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值