安卓学习笔记之ImageSwitcher

5 篇文章 0 订阅

ImageSwitcher是用于图片浏览以及上下图片的切换显示它的内部包含有两个ImageView

一丶效果预览:


二丶如何实现

1xml源码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

   <ImageSwitcher 
       android:id="@+id/imageSwitcher"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:layout_alignParentTop="true"
       android:layout_alignParentBottom="true"
       android:inAnimation="@android:anim/slide_in_left"
       android:outAnimation="@android:anim/slide_out_right"/>

   <Gallery 
       android:id="@+id/gallery"
       android:layout_width="match_parent"
       android:layout_height="60dp"
       android:layout_alignParentBottom="true"
       android:layout_alignParentLeft="true"
       android:gravity="center_vertical"
       android:spacing="16dp"/>
</RelativeLayout>
上面的ImageSwitcher中最后两句的代码是设置图片进入和进出的样式,好让图片进入和进出不显得那么生硬
2 ImgeSwitche使用工厂类创建的 先看(ViewFactory)中的源码 

 public void setFactory(ViewFactory factory) {
        mFactory = factory;
        obtainView();
        obtainView();
    }
上面的obtainView()方法被调用了2次创建了2个ImageView

Activity中的代码:

package com.example.android_rimageswitcher02;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
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.ImageView.ScaleType;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity  implements ViewFactory,OnItemSelectedListener{
    private ImageSwitcher switcher;
    private Gallery gallery;
    private int[] imagesId={
    		R.drawable.mv,
    		R.drawable.switcher1,
    		R.drawable.switcher2,
    		R.drawable.switcher3,
    		R.drawable.switcher4,
    		R.drawable.switcher5,
    		R.drawable.switcher6
    };
    
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		switcher=(ImageSwitcher)findViewById(R.id.imageSwitcher);
		gallery=(Gallery)findViewById(R.id.gallery);
		switcher.setFactory(this);
		gallery.setOnItemSelectedListener(this);
		gallery.setAdapter(new MyAdapter(this));
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public View makeView() {
		//System.out.println("View*****start");
		ImageView iv=new ImageView(this);
		iv.setBackgroundColor(0xff000000);
		iv.setScaleType(ScaleType.FIT_CENTER);
		//iv.setImageResource(imagesId[index]);
		System.out.println("View*****start");
		return iv;
	}
	
	class MyAdapter extends BaseAdapter{
        private Context context;
        public MyAdapter(Context context){
        	this.context=context;
        }
		@Override
		public int getCount() {
			return imagesId.length;
		}

		@Override
		public Object getItem(int position) {
			return position;
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ImageView iv=new ImageView(this.context);
			iv.setImageResource(imagesId[position]);
			iv.setAdjustViewBounds(true);
			iv.setScaleType(ScaleType.FIT_CENTER);
			return iv;
		}
		
	}
    // int index=0;
	@Override
         <span style="color:#ff0000;">public void onItemSelected(AdapterView<?> parent, View view, int position,
			long id)</span> {
		//System.out.println("onItemSelected*******"+position+"*******stat" + index);
		//if(index>0)
		<span style="color:#ff0000;">switcher.setImageResource(imagesId[position])</span>;
		//System.out.println("onItemSelected*******"+position+"********end" + index);
		//index++;
		
	}

	@Override
	public void onNothingSelected(AdapterView<?> parent) {
		// TODO Auto-generated method stub
		
	}

}
注意标记中的方法(如果不显示就是<span>中的代码 在 onItemSelect方法中和makeView方法中)按照开始的时候我们根本没有触发onItemSelect事件但是,程序在一开始执行的时候自动执行onItemSelected方法

我已经试过了不仅如此就连Spinner如果你设置onItemselsect事件它也会在一开始的时候自动执行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值